确定。当我尝试为Spring JDBC设置Spring Aspect时,我在Aspect for Spring JDBC中得到了Exception。
现在我改变了代码并配置了一点,我没有看到任何异常。我的方面仍未被调用。
这是配置。
<bean name="com.application.dao.JDBCTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="gov.usda.fsa.pscao.clg.cops.dao.DataSource"/>
</property>
</bean>
<bean name="com.application.dao.NamedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg index="0">
<ref bean="com.application.dao.JDBCTemplate"/>
</constructor-arg>
</bean>
....
<context:component-scan base-package="com.application.spring.aspect"></context:component-scan>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean name="sqlLoggingInterceptor" class="com.application.spring.aspect.SQLLoggingInterceptor" />
<aop:config>
<aop:aspect id="aspect4" ref="sqlLoggingInterceptor">
<aop:pointcut expression="execution(* org.springframework.jdbc.core.JdbcOperations.*(String, ..))" id="pointcut4" />
<aop:around pointcut-ref="pointcut4" method="profile" />
</aop:aspect>
</aop:config>
方面实施:
@Aspect
@Component
public class SQLLoggingInterceptor {
public SQLLoggingInterceptor() {
System.out.println("SQLLoggingInterceptor created...");
}
public Object profile(ProceedingJoinPoint pjp) throws Throwable {
//do logging
}
}
我的依赖项是(Spring版本3.2.8):
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.5.3</version>
</dependency>
并且,JDBCtemplate的调用方式如下:
NamedParameterJdbcTemplate jdbcTemplate;
jdbcTemplate.queryForList(SQL_STRING, parametersMap);
考虑到JdbcOperations的NamedParameterJdbcTemplate包装,我假设每当我执行上面的查询时,它应该能够调用方面。但这个方面没有被称为。我在这里想念一下吗?我非常感谢任何意见或建议。提前谢谢。