2017-01-25 3 views
0

У меня есть кувшин с основным методом. Я создал конфигурацию java с аннотацией @Configuration.JavaConfig Spring bean beans доступен для всех приложений

@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)); 

Класс в котором я пытаюсь ввести компонент (это @ Компонент нужен здесь на самом деле?)

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

Я хотел бы иметь возможность вводить этот RestService боб через @Autowired во всем моем приложении, не только в SomeProxyImpl (который не работает в любом случае). Как я могу это сделать?

+0

http://stackoverflow.com/questions/41672758/autowiring-a-spring-managed-bean-in-the-resteasy-providers/41674399#41674399 –

+0

вы использовали scanBasePackages: @SpringBootApplication (scanBasePackages = {.. } – melihcoskun

+0

Autowire your 'RestService' в ваших контроллерах. Это будет отвечать вашим потребностям. –

ответ

0

Spring не поле autowire, созданное новым, если вы его не просите, например: ApplicationContextHolder.getContext(). GetAutowireCapableBeanFactory(). AutowireBean (object);

Если ваш класс SomeProxyImpl находится в пакете «com.test.soapproxy», а ваш класс аннотируется с @Component, то Spring должен создать экземпляр с автоподготовкой bean-компонента. Вы должны получить этот компонент из своего контекста и использовать его вместо создания нового.

+0

ApplicationContextHolder - это не класс, включенный в весенние банки? – Grandmaster

+0

Хм, извините, это класс из нашей внутренней структуры ... но это просто класс, который реализует «ApplicationContextAware» и может легко предоставить нам Spring ApplicationContext. –

Смежные вопросы