要するに...私のアスペクトは(@Beforeによる)呼び出しをキャッチします。joinpoint から Bean の名前を取得できます
myapp.dao.BookRepository
春のxmlでは、次のようになります。
<bean id="bookRepo" class="myapp.dao.BookRepository">
<property name="dataSource" ref="dataSource" />
</bean>
私がやりたいのは、呼び出されたメソッドで以下のようにそのプロパティを設定することだけです。
そのクラスでローカルにそれを行うことができます(メソッド本体の最初の行):
@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 名を確認し、適切なクラスにキャストします)。このようなことが春に可能かどうか教えてください。