ApplicationContext
自分自身をBeanに注入したい。
何かのようなもの
public void setApplicationContext(ApplicationContect context) {
this.context = context;
}
それは春に可能ですか?
ApplicationContext
自分自身をBeanに注入したい。
何かのようなもの
public void setApplicationContext(ApplicationContect context) {
this.context = context;
}
それは春に可能ですか?
以前のコメントは問題ありませんが、通常は次のことを好みます。
@Autowired private ApplicationContext applicationContext;
ApplicationContextAware
インターフェイスを使用して簡単に。
public class A implements ApplicationContextAware {
private ApplicationContext context;
public void setApplicationContext(ApplicationContext context) {
this.context = context;
}
}
次に、実際の applicationContext で、Bean を参照するだけで済みます。
<bean id="a" class="com.company.A" />
はい、ApplicationContextAwareインターフェイスを実装するだけです。
特別な解決策: 任意の (Spring 以外の) クラスから Spring Bean を取得する
@Component
public class SpringContext {
private static ApplicationContext applicationContext;
@Autowired
private void setApplicationContext(ApplicationContext ctx) {
applicationContext = ctx;
}
public static <T> T getBean(Class<T> componentClass) {
return applicationContext.getBean(componentClass);
}
}