我在Spring XML中有以下bean配置,它读取了一些属性文件。 然后我使用bean serverPropertyLoader 作为factory-bean,通过factory-method创建另一个类型为 java.util.Properties 的bean serverProperties 。我在下一个配置中将bean serverProperties 传递给 org.springframework.context.support.PropertySourcesPlaceholderConfigurer ,以允许spring处理属性注入。
<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>
现在我想在Spring Java Configuration中使用 serverPropertyLoader 或 serverProperties 来创建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(...);
}
}
serverPropertyLoader 和 serverProperties 均为空。我怎样才能自动装配其中一个。春季版:4.1.6.RELEASE
答案 0 :(得分:0)
Spring不知道,bean'dataSource'需要'serverProperties'和'serverPropertyLoader'。 所以它试图在另一个自动装配之前创建'dataSource'。 这不是人们所期望的,但我遇到了类似的情况,
将数据源的签名更改为
500
Spring将路径参数,使用参数而不是字段,这应该起作用。