2016-04-24 89 views
0

在Spring XML中,我有下面的bean配置来读取一些属性文件。 然后,我使用bean serverPropertyLoader作为出厂豆创建另一个豆serverProperties类型的java.util.Properties由工厂方法。我在下一个配置中将bean serverProperties改为org.springframework.context.support.PropertySourcesPlaceholderConfigurer以允许弹簧处理属性注入。在@Configuration类中使用Spring XML配置的bean,并将该bean用作另一个bean的工厂bean

<bean name="serverPropertyLoader" class="com.xxx.utils.ServerPropertyLoader"> 
    <constructor-arg name="propertyFiles"> 
     <list> 
      <value>config.properties</value> 
     </list> 
    </constructor-arg> 
</bean> 

<bean id="serverProperties" factory-bean="serverPropertyLoader" factory-method="getProperties" /> 

<bean id="propertyPlaceholder" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> 
    <property name="propertiesArray"> 
     <list> 
      <ref bean="serverProperties" /> 
      <ref bean="databaseProperties" /> <!-- Another Type of Properties --> 
     </list> 
    </property> 
</bean> 

现在我想请使用serverPropertyLoaderserverProperties的Spring Java配置的内部,而下面创建一个bean阅读一些财产。

@Configuration 
public class DataAccessConf { 

    @Autowired 
    private ServerPropertyLoader serverPropertyLoader; 

    @Autowired 
    private Properties serverProperties; 

    @Bean(name = "dataSource") 
    public javax.sql.DataSource datasource() { 

     // want to use serverPropertyLoader or serverProperties here 

     return new DataSource(...); 
    } 
} 

两个serverPropertyLoaderserverProperties为空。我如何自动装配其中的一个。 Spring版本:4.1.6.RELEASE

回答

0

Spring不知道,那个bean'dataSource'需要'serverProperties'和'serverPropertyLoader'。 所以它试图打造“数据源”其他都在自动装配之前 这并不是人们所期望的是什么,但我遇到了类似的情况,

更改数据源的签名

public javax.sql.DataSource datasource(
     ServerPropertyLoader serverPropertyLoader, 
     Properties serverProperties) 

春天将路径参数,使用参数,而不是字段,应该工作。

相关问题