云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          在applicationContext.xml中定義了一個DataSource:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" />
          但是在代碼中,使用anotation進行注入的時候,卻總是找不到這個dataSource.

              @Autowired
              public void setDataSource(DataSource dataSource) {
                  jdbcTemplate = new JdbcTemplate(dataSource);
                  jdbcInsert = new SimpleJdbcInsert(dataSource);
              }

          最后終于想明白了,原因大概是這樣的,使用autowired的時候,默認是根據(jù)類型來匹配的,在xml中定義的類型是:BasicDataSource,而不是接口DataSource,所以默認情況下這樣是無法自動裝配的。解決辦法是指令使用名字來進行bean的匹配,也就是用Qualifier指定bean的id.

              @Autowired
              public void setDataSource(@Qualifier("dataSource") DataSource dataSource) {
                  jdbcTemplate = new JdbcTemplate(dataSource);
                  jdbcInsert = new SimpleJdbcInsert(dataSource);
              }


          另外一點,在網(wǎng)上搜索的過程中發(fā)現(xiàn)有不少人都有類似的問題,但是他們的原因是沒有正確使用spring的注入,而是自己在代碼中new了一個Dao的實例,這樣的話,spring是無法將dataSource注入到dao的實例中的



          主站蜘蛛池模板: 牡丹江市| 九龙城区| 闸北区| 大冶市| 隆化县| 井陉县| 赫章县| 瓦房店市| 榆中县| 重庆市| 江口县| 静乐县| 临西县| 界首市| 延长县| 玉田县| 宿松县| 尉氏县| 布尔津县| 综艺| 岳西县| 鲁山县| 和政县| 江孜县| 齐齐哈尔市| 福清市| 松原市| 清河县| 六枝特区| 德令哈市| 石屏县| 扶沟县| 海城市| 南汇区| 亳州市| 万盛区| 高雄县| 资溪县| 天气| 巴林左旗| 会理县|