【问题标题】:spring dataSource config. with annotaions弹簧数据源配置。带注释
【发布时间】:2013-06-23 11:12:33
【问题描述】:

我的道实现;

\\here are imports...
@Repository
public class CompanyDaoImp extends JdbcDaoSupport implements CompanyDao {


private static final String INSERTCOMPANY = "INSERT INTO b_company"
        + "(NAME)VALUES(?)";

这是我的豆子;

<?xml version=".........

 <!-- TODO add the component-scan and annotation-config elements -->

 <context:annotation-config/>
 <context:component-scan base-package="com.some.company"/>



 <bean id="companyAppDataSource"   
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
 <property name="url" value="jdbc:mysql://localhost:3306/companyapp"/>
 <property name="username" value="root"/>
 <property name="password" value="root"/>
 </bean>
 </beans>

我不明白为什么我一直接受例外; .......调用init方法失败;嵌套异常是 java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required.........

【问题讨论】:

    标签: spring jdbc annotations datasource


    【解决方案1】:

    JdbcDaoSupport 没有任何注解来自动注入DataSource。您必须像这样覆盖 setDataSource 方法:

    <bean name="companyDaoImp" class="...CompanyDaoImp">
        <property name="dataSource" ref="companyAppDataSource" />
    </bean>
    

    Spring 无法自动注入 DataSource,因为您可能有多个数据源,在这种情况下,有必要告诉 Spring 您需要哪一个。

    【讨论】:

    • 我认为 setDataSource 是最终的,所以我不能覆盖它。第二个溶胶。有效,但有什么方法可以只用注释(数据源 bean 除外)
    • @cek 你是对的。我没有注意到。我在答案中删除了这个。对不起。
    • 没问题。您认为我在定义数据源 bean 时是否犯了错误?
    • 您可以定义另一个方法名称 (setDataSource2),但这不是很漂亮。您也不能使用 JdbcDaoSupport 并使用适当的注释为所有 DAO(例如 AbstractDaoSupport)定义自己的公共类。
    • 下面的 JIRA 问题谈到了同样的问题jira.springsource.org/browse/SPR-4339
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 2011-09-11
    • 2019-09-26
    • 2011-01-02
    • 2011-07-28
    • 2015-03-28
    相关资源
    最近更新 更多