[英]Wiring a spring managed bean from a class which is not managed by spring
[英]Class not able to access bean managed by Spring
I have Spring configuration file where I am defining beans but somehow this bean is not accessible from one of the class in same package, though same beans are accessible from Controller class which was annotated as @Controller. 我在想可能是這個 class 不是由 Spring 管理的,但事實並非如此。 1)配置class
@Bean
public FooConsumer fooConsumer() {
return new FooConsumer();
}
@Bean
public Map<String, ProxyConsumer> appProxyConsumerMap() {
Map<String, ProxyConsumer> proxyConsumer = new HashMap<String, ProxyConsumer>();
proxyConsumer.put(FOO_APP, FooConsumer());
return proxyConsumer;
}
@Bean
public FooEventConsumer fooEventConsumer() {
return new FooEventConsumer();
}
@Bean
public Map<String, FooConsumer> fooConsumerMap(){
Map<String, FooConsumer> fooEventConsumer = new HashMap<String, FooConsumer>();
fooEventConsumer.put(FOO_EVENT, fooEventConsumer());
}
2) Controller class
@Resource
@Qualifier("appProxyConsumerMap")
Map<String, ProxyConsumer> appProxyConsumerMap;
//proxyApp comes as path variable
ProxyConsumer consumer = appProxyConsumerMap.get(proxyApp);
//invoke consumer
boolean consumed = consumer.consumeEvent(eventRequest);
//here consumer is my FooConsumer class, till now all works fine.
3) 現在在 FooConsumer class 中,它嘗試訪問名為 fooConsumerMap 的 Map bean 以獲取要調用的事件,但它以某種方式返回 null。
@Resource
@Qualifier("fooConsumerMap")
Map<String, FooConsumer> fooConsumerMap;
FooEventConsumer consumer = fooConsumerMap.get(eventType);
//Here fooConsumerMap comes as null in this class, though it comes as object in controller class , please advise.
在您的配置文件中,使用在相同配置中聲明的 FooConsumerMap bean 構造您的 FooConsumer bean。
您可以將其他 bean 自動裝配到配置文件中,但是要將文件中的 bean 組合在一起,您可以將它們作為構造函數 arguments 傳遞。
請注意,如果您多次調用 Bean 注解的方法,即使方法邏輯構造了一個新實例,您也會驚奇地總是得到相同的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.