JavaConfig Spring使bean可用于所有应用程序

时间:2017-01-25 10:21:09

标签: java spring

我有一个带有main方法的jar。我使用@Configuration注释创建了一个java配置。

@Configuration
@ComponentScan(basePackages = { "com.test.commons" })
public class ProxyConfig {

}

在这个com.test.commons中我已经提供了服务

package com.test.commons;

@Service
public class RestService {

    //do rest calls
    public String restGetCall(URL url){
        ...
    }
}

我不是要求这个

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        context.register(ProxyConfig.class);
        context.getBean("myBean");

主要

    @SpringBootApplication(scanBasePackages={"com.test.commons", "com.test.soapproxy" })
    public class MainAppProxy 

    {
        private final static Logger logger = LoggerFactory.getLogger(MainAppProxy.class);
        public static void main( String[] args )
        {
            SpringApplication.run(MainAppProxy.class, args);
            // Choose environment from the arguments
            String env = args[0];
            // publish an endpoint here
            Configuration config = null;
            config = configs.properties
                (new File("config_"+env+".properties"));
        Endpoint.publish(endpointAddress, new SomeProxyImpl(config));

我正在尝试注入bean的类(这里真的需要@Component吗?)

@Component
public class SomeProxyImpl implements SomeServiceSoap {
@Autowired  RestService restService;

我希望能够在我的所有应用程序中通过@Autowired注入此RestService bean,而不仅仅是在SomeProxyImpl(无论如何都不工作)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

Spring不会自动创建由new创建的字段,除非你要求它,如下所示:ApplicationContextHolder.getContext()。getAutowireCapableBeanFactory()。autowireBean(object);

如果你的SomeProxyImpl类在“com.test.soapproxy”包中,并且你的类用@Component注释,那么Spring必须创建一个bean自动装配的实例。 然后,您应该从上下文中获取此bean并使用它而不是创建新bean。