【发布时间】:2016-08-05 20:35:14
【问题描述】:
对于基于springframwork的应用,在使用xml声明bean时,可以通过传递唯一值甚至参数来配置bean id,然后在运行时解析该值。
现在我希望将所有xml配置替换为java注解。
假设我想创建两个具有不同 id 的数据库 bean。
bean.xml
<bean id="A.database" class="org.apache.commons.dbcp.BasicDataSource">
<!-- collaborators and configuration for this bean go here -->
</bean>
<bean id="B.database" class="org.apache.commons.dbcp.BasicDataSource">
<!-- collaborators and configuration for this bean go here -->
</bean>
然后我将上层代码优化为一个bean,两个属性文件用于两个应用程序
bean.xml
<bean id="${appName.database}" class="org.apache.commons.dbcp.BasicDataSource">
<!-- collaborators and configuration for this bean go here -->
</bean>
applicationA.properties
appName.database=A.database
applicationB.properties
appName.database=B.database
整个应用程序由“框架”模块组成,它为每个应用程序提供通用的bean,如数据库bean、jdbcTemplate bean,以及为占位符提供属性值并用唯一ID初始化bean的“应用程序”模块。所以即使我同时启动多个应用程序,它们也会从上下文中找到对应的bean。
总的来说,我希望这样做
@Bean(name = "${beanName}")
public ABean getBean() {}
并在应用程序级别解析 ${beanName}。
【问题讨论】: