云自無心水自閑

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

          日歷

          <2011年8月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          隨筆檔案

          積分與排名

          • 積分 - 1127739
          • 排名 - 27

          最新評論


          在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的時候,默認是根據類型來匹配的,在xml中定義的類型是:BasicDataSource,而不是接口DataSource,所以默認情況下這樣是無法自動裝配的。解決辦法是指令使用名字來進行bean的匹配,也就是用Qualifier指定bean的id.

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


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



          主站蜘蛛池模板: 南充市| 淮滨县| 阳信县| 区。| 焉耆| 甘德县| 慈利县| 霸州市| 巩义市| 漯河市| 驻马店市| 紫阳县| 玛沁县| 延长县| 连州市| 汉源县| 丹寨县| 刚察县| 东源县| 南昌市| 大化| 景德镇市| 屏南县| 察隅县| 黄山市| 万宁市| 莫力| 仪陇县| 芮城县| 岳池县| 古浪县| 阿鲁科尔沁旗| 平湖市| 隆回县| 昌江| 读书| 嘉义市| 顺平县| 彩票| 五峰| 嘉黎县|