【发布时间】:2015-05-22 05:06:49
【问题描述】:
我有一个应用程序可以访问可配置的数据库列表。我不想在类中硬编码相应的 DAO 对象。有没有办法在 Spring 中做到这一点?
硬编码的方式是:
databases.properties:
db1.url = jdbc://db1.acess.com:3306
...
db2.url = jdbc://db2.access.com:3306
...
db3.url = ldap://ldapdb.access.com:3306
applicationContext.xml:
<bean id="MyServicebean" class="com.MyServiceImpl">
<property name="DBDao1" ref="DBDao1"/>
<property name="DBDao2" ref="DBDao2"/>
<property name="LdapDao" ref="LdapDao"/>
</bean>
public class MyServiceImpl {
@Autowired
private DBDao DBDao1;
@Autowired
private DBDao DBDao2;
@Autowired
private LdapDao LdapDao;
...
}
有没有更灵活的方法来根据我们在 databases.properties 中指定的 DB 数量来配置和自动装配 DAO 对象?
【问题讨论】:
-
看看这里:stackoverflow.com/questions/13750079/…。也许你应该创建 DAO 工厂并注入它,而不是注入每个 DAO。