【问题标题】:Configurable number of Spring DAO objects可配置数量的 Spring DAO 对象
【发布时间】: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 对象?

【问题讨论】:

标签: spring dao


【解决方案1】:

查看您的 database.properties,似乎并非所有 DAO 都连接到数据库。有些正在连接到 LDAP 服务器。所以很明显,DAO 的实现会有所不同,不能概括/抽象它。

如果所有连接到数据库的 DAO 都执行相同的操作集并根据某些条件(例如:clientId)连接到不同的数据库,那么请查看 Spring 的 AbstractRoutingDataSourcehttp://spring.io/blog/2007/01/23/dynamic-datasource-routing/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    相关资源
    最近更新 更多