あなたのSpring Beanはあなたのサーバーに依存しません。あなたのアプリケーションが実行されると、例えばmainメソッドや単体テストが実行されて初期化されます。
春が動作する方法は、次のように定義されるいずれかの可能性が、あなたの豆を定義するアプリケーション・コンテキストを持っているということです。
Javaクラス - Javaで定義されている場合はクラスが@Configurationアノテーションを持つことになります豆はまた、同様に、アノテーションによって定義することができます
<bean id="myBean" class="com.my.package.MyBean">
<constructor-arg ref="anotherBean"/>
</bean>
ノートに同じように見えるかもしれませんファイルにエントリを持つことになります - そして、あなたの豆は@Bean注釈
XMLファイルでマークされます。
2つの設定、1つのサービスビーン用のアプリケーション、環境に応じて異なるデータソースを定義する1つのインフラストラクチャ設定が理想的です。インフラストラクチャの設定を環境に応じて変更できることは、サーバー上でローカルでもテストを実行できる主な理由の1つです。インフラストラクチャ設定用に定義されたプロファイルがあることがわかります。つまり、さまざまな環境でテストを実行できるようになっています。ローカルマシンにSQLサーバーがないため、インメモリデータベースを代わりに使用します。
アプリケーションが実行されると、単体テストによるこのシナリオでは、Spring Beanの定義にアクセスし、Beanのインスタンス化を開始します(この間にテストの開始時に若干の遅延が見られることがあります)あなたのアプリケーションは、あなたのテストの実行を開始するのが良いです。あなたのテストクラスの上部に
あなたには、いくつかの注釈を持っているかもしれません: @RunWith(SpringJUnit4ClassRunner.class) - Javaの設定 @ContextConfigurationを使用している場合、ばね支持
でテストクラスの実行を作る(クラス= MYCONFIG .class)
xml configを使用する場合 @ContextConfiguration( "classpath:com/my/app/resources/my-test-config。xml "
あなたの質問を完全に理解するのは難しいですが、クラスの@ContextConfigurationアノテーションはクラスのどこから豆を拾うのかを教えてくれますが、データソースが何であるかを定義します。
デフォルトのクラスパスは、プロジェクトが情報を見つけることができ
以上使用するように設定されているものになります:calsspathは、あなたのプロジェクトのために定義されているものであれば、それはあなたのApplicationContextのファイルをロードする必要がありhttp://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/
を@ContextConfigurationを書くべきではありません。どのような場合でも、JUnitを実行するので、クラスパス内のすべてのクラスをロードする必要がありますが、それは起こりません。 –
はい、私の間違いですが、Junitを走らせている間にクラスパスが印刷されました。プロジェクトのクラスパスが表示されました。 –