无法将Bean注入超级

时间:2018-11-01 08:26:53

标签: java spring

你好,我对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());
     }

}

谢谢

0 个答案:

没有答案