你好,我对bean @Autowired
有疑问
我有两个项目,并说A,B。我想使用B作为Jersey过滤器A对B具有依赖关系。我正尝试从A设置B的配置。
我需要先注册;
register(filter());
并创建新的过滤器:
private Filter filter(){
return new Filter(new FilterConfigBuilder().setPropA(ServiceProperties.PROP_A).build();
}
这将调用项目B的Filter类:
@Autowired
FilterService service;
private FilterConfig config;
public Filter(FilterConfig config){
this.config = config;
}
我希望现在在所有B项目中使用config。例如;
在过滤器服务中:
@Service
FilterService extends JPAservice{
@Autowired
FilterConfig config;
FilterService(){
// Null Point Exception
System.out.println(config.getPropA());
}
}
因此,在获得配置后如何注入bean。
谢谢
编辑:
我将其固定为@M。 Deinum建议。现在看起来像这样。
项目A:
@Bean
private Filter filter(){
return new Filter(new FilterConfigBuilder().setPropA(ServiceProperties.PROP_A).build());
}
项目B:
@Autowired
public Filter(FilterConfig config){
// I am able to get config. But until this point FilterConfig component already set up with main constructor.
this.config = config;
// I have couple of beans that dependent on this config such as:
ClsterService service = new ClsterService(config);
// I expect this one to work only once but result is like this:
// Constructor parameter 0
// Constructor parameter 0
// Constructor parameter 1 // I set this one.
// Why it is calling more than once ?
}
@Service
public class ClsterService extends BaseCluster{
@Autowired
public ClsterService(FilterConfig config){
System.out.println("Constructor parameter"+ config.getPropA());
}
}
谢谢