不调用用于Spring JDBC的AspectJ Aspect

时间:2014-08-28 21:15:51

标签: aspectj spring-aop spring-jdbc

确定。当我尝试为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包装,我假设每当我执行上面的查询时,它应该能够调用方面。但这个方面没有被称为。我在这里想念一下吗?我非常感谢任何意见或建议。提前谢谢。

0 个答案:

没有答案