1

私はSpringが初めてで、(ApplicationContext ctx = new ApplicationContext( "myAppContext")を使用する代わりに)変数を注入する必要があるクラスに注釈を付けるだけでアプリケーションをロードできるかどうか疑問に思っています。

次の例を挙げましょう。

TestSpring.java文字列を自動配線する必要があるこのクラスがあります

package mytest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

//Is it possible to put an annotation here that loads the application context "TestSpringContext.xm"??
public class TestSpring {

    @Autowired
    @Qualifier("myStringBean")
    private String myString;


    /**
     * Should show the value of the injected string
     */
    public void showString() {
        System.out.println(myString);
    }

}

Spring Bean 構成ファイル ( TestSpringContext.xml ) は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
        >

 <context:annotation-config />

 <bean id="myStringBean" class="java.lang.String">
 <constructor-arg value="I am  an injected String."/>
</bean>
</beans>

myStringここで、次のコードを使用して、自動配線された文字列 (TestSpring.java で宣言) の値を表示したいと思いますRunTestSpring.java

package mytest;

public class RunTestSpring {

    public static void main(String[] args) {
        TestSpring testInstance = new TestSpring();
        testInstance.showString();

    }

}

ここで私の質問は、アプリケーション コンテキストの読み込み中に "RunTestSpring.java" を正常に実行することは可能ですかRunTestSpring.java? はいの場合、どの注釈を付けますか?

4

2 に答える 2

2

環境の初期化にスプリング インジェクションを使用する JUnit クラスを作成することをお勧めします。このようなもの -

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/spring/spring-wireup.xml", inheritLocations = true)
public class MyTestCase extends TestCase {
    // your test methods ...
}
于 2012-07-20T17:36:38.917 に答える
2

@Configurableおそらくあなたが探しているものです。Spring によってインスタンス化されていないオブジェクトが、Spring によって自動配線された依存関係を持つことができるようになります。ただし、キャッチは、AspectJ のコンパイル時間/ロード時間の織り込みが必要であるということです (Spring AOP ではありません)。

ここに 1 つの参照があります: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/aop.html#aop-atconfigurable

于 2012-07-20T18:28:41.287 に答える