私は、Spring 2.5 の後に導入された Annotation Driven Spring にかなり慣れていません。私は XML ベースの構成にかなり慣れており、Spring Container をロードする XML アプローチを使用して、Bean を AutoWire に取得する際に問題が発生したことはありません。XML の世界はとてもクールでしたが、その後 Annotation Ville に目を向けたところ、ここにいる人々に簡単な質問があります。ここに私が作成したクラスがあります:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.myspringapp.MyBean;
import com.myspringapp.MySpringAppConfig;
public class TestConfig {
@Autowired
private static MyBean myBean;
public static void main(String[] args) {
new AnnotationConfigApplicationContext(MySpringAppConfig.class);
System.out.println(myBean.getString());
}
}
上記は、AnnotationConfigApplicationContext クラスを呼び出す標準の Java クラスです。「MySpringAppConfig」クラスがロードされると、myBean aurowired プロパティへの参照があり、その上で getString メソッドを呼び出すことができるという印象を受けました。ただし、常に null を取得しているため、NullPointerException が発生します。
package com.myspringapp;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
public String getString() {
return "Hello World";
}
}
上は非常に理解しやすいコンポーネント MyBean で、下は構成クラスです。
package com.myspringapp;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MySpringAppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
注: (MyBean)ctx.getBean("myBean"); を使用すると、Bean への参照を取得できます。しかし、getBean メソッドを使用したくありません。