問題タブ [applicationcontext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - BeanFactoryとApplicationContext
私はSpringFrameworkにかなり慣れていないので、Spring MVCを評価して次の会社のプロジェクトで使用するために、Spring Frameworkをいじって、いくつかのサンプルアプリをまとめています。これまでのところ、Spring MVCで見たものが本当に気に入っており、非常に使いやすいようで、単体テストに非常に適したクラスを作成することをお勧めします。
演習と同じように、サンプル/テストプロジェクトの1つのメインメソッドを作成しています。私がよくわからないことの1つは、との正確な違いBeanFactory
ですApplicationContext
。これは、どの条件で使用するのが適切ですか。
ApplicationContext
それが拡張されることは理解していますBeanFactory
が、単純なmainメソッドを記述しているだけの場合、ApplicationContext
提供する追加の機能が必要ですか?そして、まさにどのような追加機能がApplicationContext
提供するのでしょうか?
「main()メソッドでどちらを使用する必要があるか」という回答に加えて、そのようなシナリオでどの実装を使用する必要があるかについての標準またはガイドラインはありますか?私のmain()メソッドは、XML形式のBean /アプリケーション構成に依存するように作成する必要があります-それは安全な仮定ですか、それともユーザーを特定の何かにロックしていますか?
そして、この答えはWeb環境で変化しますか?私のクラスのいずれかがSpringを認識する必要がある場合、それらは必要になる可能性が高くなりますApplicationContext
か?
助けてくれてありがとう。これらの質問の多くはおそらくリファレンスマニュアルで回答されていることは知っていますが、細かい櫛でマニュアルを読まずに、これら2つのインターフェイスとそれぞれの長所/短所の明確な内訳を見つけるのに苦労しています。
java - できるだけ多くのメモリを節約するように Spring を構成するにはどうすればよいですか?
メモリの制約があるセミエンベデッド デバイスにアプリケーションを展開しています。アプリのヒープダンプを分析し、最大の消費者を攻撃して、できる限り節約しようとしています。
Spring 2.5 を Spring DM 1.1 と一緒に使用していますが、Spring は XML から解析されたすべての BeanDefinitions を含むオブジェクト グラフ全体を保持しているように見えるため、より複雑な Spring コンテキストを持つバンドルの一部がかなりの量のメモリを使い果たしていることに気付きました。 . アプリが初期化され、すべてが注入されたら、これのほとんどは不要であると思います。
この動作を制御できるSpringの構成オプションはありますか? 低メモリモードで実行しますか? 不要なものをすべて捨てる?計算時間をサイズと引き換えに?
spring - Beanの初期化が完了した後にメソッドを呼び出す方法は?
Beanで(非静的)メソッドを呼び出す必要があるユースケースがあります-ApplicationContextのロード時に1回だけです。これにMethodInvokingFactoryBeanを使用しても大丈夫ですか?または、より良い解決策がありますか?
補足として、ConfigContextLoaderListenerを使用してWebアプリケーションにアプリケーションコンテキストをロードします。そして、Bean'A'がインスタンス化された場合、methodA()を1回呼び出すだけです。
どうすればこれをうまく行うことができますか?
spring - アプリケーション間でSpringセキュリティ構成を共有する
私はSpringで真新しいスパンキングをしていて、ApressのSpringRecipesの本から私が持っている知識の大部分を手に入れました。
LDAP認証を1つのWebアプリ内でSpringSecurityと連携させています。ただし、この1つのWebアプリケーションからアプリケーションコンテキストBeanとプロパティファイルをリッピングし、すべてのWebアプリケーションが同じBeanを参照できるようにそれらを外部化したいと思います。したがって、何か(ldapuserやldap urlなど)を変更する必要がある場合は、1つの場所で変更するだけで、残りのアプリはそれを認識します。
UPDATEリロード可能なSpringプロパティを 実装しました。これは、元のファイルにアクセスしたときにプロパティをリロードします。暗号化されたプロパティを使用していますが、以下は、リロード可能なSpringプロパティのプロパティの上に作成したクラスです。
ReloadingEncryptablePropertyPlaceholderConfigurer.java
そして、これが私のsecurityContext.xmlでそれをどのように使用するかです:
java - コンストラクター内で利用可能な Spring Application Context
コンストラクター引数を使用して、Spring によってインスタンス化された Bean 内の Spring Application Context から Bean を作成しようとすると、問題が発生します。
インターフェイスを実装しましたApplicationContextAware
が、インスタンスが作成された後にコンテキストが入力されます (明らかです)。
しかし、コンストラクターから Bean を取得する必要があり、実行時に定義される可変数のオブジェクトについて話している場合、どのように処理するのが正しいのでしょうか?
java - Web アプリケーションで実行時に Spring コンテキストを動的にロードする
Spring Framework を使用する標準の Java アプリケーションを Web アプリケーションに変換しています。このアプリケーションは、 を使用して実行された実行時パラメーターに基づいて、新しい Spring コンテキストをロードしますClassPathXmlApplicationContext/FileSystemXmlApplicationContext
。
したがって、私の質問は、web.xml を既に構成し、Spring Listeners を以下のように追加した場合に、Web アプリケーションで同じことを行う方法です。
別の問題として、私の展開環境は Tomcat 5.5 にあり、Spring コンテキストの読み込み中に何が問題なのかを知るためのログを確認できません。
java - Spring 3 Java Config: インポートされた @Configuration は拡張されていませんか?
注釈ベースの構成で最新の Spring 3 規則を使用しようとしているアプリがありますが、コンストラクター注入を使用するレガシー クラスもあります。Spring のドキュメントに基づいて、その依存関係を作成するメソッドを呼び出して、それを必要とするコンストラクターに渡すだけです。Configuration クラスが拡張されている場合は機能するようですが、Configuration クラスを @Import すると拡張されないため、自動配線されていないインスタンスを挿入する可能性があるようです。
具体的には、私のリポジトリの 1 つがコンストラクターによって別の Bean に注入され、そのリポジトリが他の Bean と同じ構成クラスで定義されている場合 (リポジトリは独自の構成クラスにある必要があることはわかっています)、注入されたものとは配線されません。エンティティマネージャー。
私の豆:
そして、次のような 2 つの構成クラス:
私のメインは次のようになります。
MyImportedConfig.class をロードすると、正しい出力が得られます (つまり、MyImportedConfig 内からメソッドを呼び出した場合、シングルトン クラスは同じです)。
しかし、AnnotationConfigApplicationContext を変更して、MyImportedConfig をインポートする MyConfig をロードすると、次のようになります。
これは予想される動作ですか?私の現在の回避策は、EntityManager を別の Configuration クラスに注入する必要があるものをすべて移動し、それをインポートしてから、Configuration クラスにコンストラクター注入が必要な @Autowired 依存関係を設定することです。
これを AnnotationConfigWebApplicationContext にロードしています。contextConfigLocation で各構成クラスを指定すると、すべての構成クラスが適切に拡張されますが、これは「モジュラー」@Import 機能を使用していないようです。
spring - @RunWithと@ContextConfigurationで注釈が付けられたjUnitテストでSpringコンテキストにアクセスするにはどうすればよいですか?
次のテストクラスがあります
services-test-config.xml
そのような方法の1つでプログラムでアクセスすることは可能ですか?好き:
eclipse - Eclipseで動的Webプロジェクトのコンテキストルートを変更するにはどうすればよいですか?
Eclipseで動的Webプロジェクトを開発しました。次のURLを使用して、ブラウザーからアプリにアクセスできます。
アクセスURLを次のように変更したい:
そのために、プロジェクト「プロパティ|Webプロジェクト設定|コンテキストルート」からコンテキストルートを変更しました。ただし、Webアプリには引き続き同じアクセスURLがあります。アプリケーションをTomcatに再デプロイし、Tomcatを再起動しましたが、アクセスURLは以前と同じです。
server.xml
ファイルに添付されているファイルがないことがわかりましたWAR
。ファイルが添付されていないserver.xml
場合、TomcatはWebアプリのコンテキストルートがどのように判断し、/MyDynamicWebApp
このコンテキストルートURLを介してアプリケーションにアクセスできるようにしますか?
xml - Spring TestのTestContextを作成するにはどうすればよいですか?
数十のBeanを実装する比較的小さなJavaライブラリがあります(データベースやGUIはありません)。他のJavaプロジェクトが自分のBeanを自分のものに注入するために使用するSpringBean構成ファイルを作成しました。
私は今、Spring Testを使用して、これらのBeanの一部を(単にインスタンス化するのではなく)junitテストクラスに注入しようとしているのは初めてです。
私はこれを、一部はSpring Testを学習するために、一部は他の人に提供するのと同じBean構成ファイルを使用するようにテストに強制するために行っています。
Springのドキュメントには、Springに付属の「TestContext」クラスを使用してアプリケーションコンテキストを作成する必要があると書かれています。これは、テストクラスの@ContextConfigurationアノテーションを介して参照するSpringXMLファイルで行う必要があると思います。
ただし、ファイルに何を入れるかについてのヒントはありません。
Eclipse内からテストを実行しようとすると、「アプリケーションコンテキストのロードに失敗しました」というエラーが表示されます。もちろんです。
アップデート:
test-applicationContext.xmlは次のとおりです。
私のプロジェクトディレクトリは次のようなものです。
楽しみのために、「mvn clean test」を介してmvnコマンドラインからビルドしようとしましたが、次のエラーが発生しました。これは私の本当の問題である可能性があります。