簡體   English   中英

Class 無法訪問由 Spring 管理的 bean

[英]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 注解的方法,即使方法邏輯構造了一個新實例,您也會驚奇地總是得到相同的實例。

檢查https://docs.spring.io/spring-javaconfig/docs/1.0.0.m3/reference/html/creating-bean-definitions.ZFC35FDC70D5FC69D269883A8E22的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM