Spring JDBC的方面

时间:2014-08-27 20:21:58

标签: spring spring-aop spring-jdbc

可以为Spring JDBC定义Spring AOP方面吗?具体来说,我正在尝试为NamedParameterJdbcTemplate设置一个记录器来记录SQL查询。下面是我的XML配置。

<aop:config>
    <aop:aspect id="aspect4" ref="sqlLoggingInterceptor">
        <aop:pointcut expression="execution(* org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate..*(..))" id="pointcut3" />
        <aop:around pointcut-ref="pointcut3" method="profile" />
    </aop:aspect>
</aop:config>

以下是我的拦截器。

@Aspect
@Component
public class SQLLoggingInterceptor {
    private final Map<String, SqlTiming> sqlTimings;

    public Object profile(ProceedingJoinPoint pjp) throws Throwable {
    //logger
    }
}

在创建上下文时抛出下面的异常,似乎无法代替NamedParameterJdbcTemplate自动装配代理,其中NamedParameterJdbcTemplate在很多DAO实现中自动装配。

15:06:32,566 INFO  [STDOUT] ERROR [ContextLoader] - Context initialization failed org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name  'com.application.dao.FileStorageDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: private org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate com.application.dao.FileStorageDAOImpl.jdbcTemplate; 
nested exception is java.lang.IllegalArgumentException: Can not set org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate field  
com.application.dao.FileStorageDAOImpl.jdbcTemplate to $Proxy166

0 个答案:

没有答案