【问题标题】:Spring Mvc DataSource Bean when using annotationsSpring Mvc DataSource Bean 使用注解时
【发布时间】:2012-09-30 02:01:45
【问题描述】:

我想知道在 applicationContext.xml 中使用注释时如何在 dataSource bean 上完成 依赖注入,或者将这个 bean 注入 DAO 的等效注释是什么,我有以下 dataSource bean定义:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driverClassName}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
</bean>

【问题讨论】:

  • 你用的是什么持久化框架?
  • 我没有使用任何持久化框架,只是使用 spring no hibernate
  • 所以直接用JDBC?理想情况下使用可用的模板?
  • @MattWhipple 是的,只是 jdbc 模板

标签: java spring-mvc dependency-injection


【解决方案1】:

类似这样:创建一个SimpleJdbcTemplate 并用DataSource 注入它。然后将其注释到您的 DAO 中:

@Repository
public class FooDao {
    @Resource(name = "jdbcTemplate")
    private SimpleJdbcTemplate jdbcTemplate;
}

你是对的——你不需要比SimpleJdbcTemplate更多的东西。不需要休眠。

【讨论】:

  • 当你说创建一个 SimpleJdbcTemplate 时,你的意思是创建一个具有 driverClassName、url、用户名和密码等属性的类?如果是这样,我是否需要对其中的属性值进行硬编码,或者我仍然可以从属性文件中读取它?
  • 不,您将它们放在 Spring 配置或 .properties 文件中。如果您使用的是 Java EE 应用服务器,一个更好的主意是创建一个 JNDI 数据源并按名称引用它。将凭据放在应用服务器上。
【解决方案2】:

其中任何一个都应该有效。

@资源 私有数据源数据源;

@自动连线 私有数据源数据源

【讨论】:

  • 我是保留 xml 配置原样只使用这些注释,还是需要使用这些值创建一个类然后注入它?
  • 是的,保持 xml 配置不变,并在需要注入数据源的类中使用这些注释。你可能需要 在你的 xml 中,所以 spring 会选择这些注释。
  • 我已经知道我正在使用 JdbcDaoSupport 而不是 JdbcTemplate 抱歉这个错误你能告诉我,因为它使用 - = getJdbcTemplate().query(sql, parameters,new );
猜你喜欢
  • 2016-10-31
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2012-05-14
  • 2011-07-09
  • 2015-03-19
相关资源
最近更新 更多