簡體   English   中英

在@Configuration類中使用Spring XML配置的bean,並將該bean作為另一個bean的factory-bean

[英]Use Spring XML configured bean inside @Configuration Class and Use the bean as factory-bean for another bean

我在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中的serverPropertyLoaderserverProperties來在創建如下所示的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(...);
    }
}

serverPropertyLoaderserverProperty均為null。 我該如何自動接線其中之一。 春季版:4.1.6.RELEASE

Spring不知道,bean'dataSource'需要'serverProperties'和'serverPropertyLoader'。 因此,它會嘗試在彼此自動連接之前創建“ dataSource”。這不是一個人所期望的,但是我遇到了類似的情況,

將數據源的簽名更改為

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

Spring將為參數設置路徑,使用參數代替字段,這應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM