gpt4 book ai didi

java - 如何将一个 spring bean 的父属性设置为另一个 bean 的属性?

转载 作者:行者123 更新时间:2023-12-01 15:27:19 26 4
gpt4 key购买 nike

是否可以使用一个 Spring bean 的属性来设置另一个 bean 的父属性?

作为背景信息,我正在尝试更改项目以使用容器提供的数据源,而不对 Spring 配置进行巨大更改。

具有我想要使用的属性的简单类

package sample;

import javax.sql.DataSource;

public class SpringPreloads {

public static DataSource dataSource;

public DataSource getDataSource() {
return dataSource;
}

//This is being set before the Spring application context is created
public void setDataSource(DataSource dataSource) {
SpringPreloads.dataSource = dataSource;
}

}

Spring beans配置的相关部分

<!-- new -->
<bean id="springPreloads" class="sample.SpringPreloads" />

<!-- How do I set the parent attribute to a property of the above bean? -->
<bean id="abstractDataSource" class="oracle.jdbc.pool.OracleDataSource"
abstract="true" destroy-method="close" parent="#{springPreloads.dataSource}">
<property name="connectionCachingEnabled" value="true"/>
<property name="connectionCacheProperties">
<props>
<prop key="MinLimit">${ds.maxpoolsize}</prop>
<prop key="MaxLimit">${ds.minpoolsize}</prop>
<prop key="InactivityTimeout">5</prop>
<prop key="ConnectionWaitTimeout">3</prop>
</props>
</property>
</bean>

测试时出现异常

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '#{springPreloads.dataSource}' is defined

或者如果我从上面删除 Spring EL,我会得到:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springPreloads.dataSource' is defined

最佳答案

我想这就是你所追求的。 springPreloads bean 用作“工厂”,但只是为了获取其 dataSource 属性,然后插入各种属性......

我猜测 springPreloads.dataSource 是 oracle.jdbc.pool.OracleDataSource 的实例?

<bean id="springPreloads" class="sample.SpringPreloads" />

<bean id="abstractDataSource" factory-bean="springPreloads" factory-method="getDataSource">
<property name="connectionCachingEnabled" value="true" />
<property name="connectionCacheProperties">
<props>
<prop key="MinLimit">${ds.maxpoolsize}</prop>
<prop key="MaxLimit">${ds.minpoolsize}</prop>
<prop key="InactivityTimeout">5</prop>
<prop key="ConnectionWaitTimeout">3</prop>
</props>
</property>
</bean>

关于java - 如何将一个 spring bean 的父属性设置为另一个 bean 的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10001668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com