2017-03-06 34 views
1

我有两个必须组合的Java应用程序。一个是Spring,其中的方法需要被第二个调用,一个Elasticsearch插件(我不认为它可以变成一个Spring应用程序,因为它已经使用某种形式的Guice进行依赖注入)。根据来自非Spring项目的Spring项目

春季类我需要调用看起来像:

@Component 
public class DataServiceController { 

    //This is defined within a @Config 
    @Autowired 
    DataTypesMap dataTypesMap; 

    /** 
    * Create an item in the data platform 
    */ 
    public ItemCreatedResponse createItem(String data, String dataType) 
      throws IOException { 
     ProcessStrategy dataStrategy = dataTypesMap.get(dataType); 
     return dataStrategy.add(data); 
    } 

如果我只是添加这个项目作为ES插件内的Maven的依赖,将自动装配Autowired dataTypesMap总是空(这是可以预料的是什么在Elasticsearch插件将告诉它如何自动装配)。

我能在这里做什么?

回答

0

您可以为自动布线字段使用setter方法,然后设置该值。

@autowired 
public void setDataTypesMap (DataTypesMap dataTypesMap){ 
this.dataTypesMap = dataTypesMap ; 
} 

在你的应用程序中,你不能自动装配bean,但你可以设置它。

myBean.setDataTypeMap(); 

第二个选项是启动非弹簧应用程序内的spring应用程序的上下文。

你可以在这里看到如何做到这一点。

http://www.springbyexample.org/examples/intro-to-ioc-creating-a-spring-application.html