2013-04-20 36 views
0

簡而言之...我的方面捕獲一個調用(由@Before)。 我可以從Spring的XML連接點bean的名字彈出設置屬性的代碼,同時擁有bean的名稱

myapp.dao.BookRepository 

它看起來像這樣得到:

<bean id="bookRepo" class="myapp.dao.BookRepository"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

所有我想要做的是設置如下圖所示的是財產調用的方法。

局部在於I類能做到這樣的(在方法主體第一行):

@Override 
public Collection<Book> getAll() { 
    jdbcTemplate.setDataSource(dataSource); // this line I want to move to the aspect 
    return jdbcTemplate.query("select * from Book", new RowMapper<Book>() { 
     public Book mapRow(ResultSet rs, int rowNum) throws SQLException { 
      return extractBook(rs); 
     } 
    }); 
} 

不幸的是我不得不這樣做在這一方面。還應該說,我有許多其他繼承該方法的類,所以我不能在沒有大的切換的情況下投入它(檢查bean名稱並將其轉換爲合適的類)。 請讓我知道如果這樣的事情在春天是可能的。

+4

你爲什麼不注入'jdbcTemplate'呢? – kan 2013-04-20 17:19:44

回答

0

我相信你不會在你應該使用的方面! AOP對我來說不應該是一個問題。

你有多個數據源嗎?如果你只有一個數據源,只需在Spring XML中注入數據源,並在那裏配置JdbcTemplate

如果您有多個數據源,請不要在您的類中使用jdbcTemplate作爲字段,否則您將在併發環境中面臨奇怪的錯誤,因爲每個線程都在一個jdbcTemplate中設置自己的數據源, ..

+0

感謝您的回覆。 – Tomek 2013-04-21 07:20:09

相關問題