1. 程式人生 > >java.lang.IllegalArgumentException: No DataSource specified

java.lang.IllegalArgumentException: No DataSource specified


 錯誤資訊如下:

java.lang.IllegalArgumentException: No DataSource specified
    at org.springframework.util.Assert.notNull(Assert.java:112)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:97)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    at cn.com.day05.TestFact.test4(TestFact.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


原因是

我在類中用到了jdbcTemplate屬性

之前用的是註解的方式配置是:   

    @Autowired
    private JdbcTemplate jdbcTemplate=new JdbcTemplate();

但是後來用的是基於xml配置的形式

就不能通過註解的方式自動裝配了,只能是通過xml

<bean id="bs" class="cn.com.day05.BookShopDaoImpl">
<property name="jdbcTemplate" ref="source"></property>
</bean>

因此類裡面應該是

private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }


總結一下:

沒有指定資料來源,就是xml配置有問題,沒有配置屬性或者是沒有指定屬性值的來源;

一般都是一個類中有複雜屬性,應該在這個類的配置檔案中指定確定的資料來源;