简而言之......我的方面捕获了一个调用(由@Before)。我可以从连接点获取 bean 的名称
myapp.dao.BookRepository
在 Spring 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名称并转换为适当的类)。请让我知道这样的事情在春季是否可行。