【发布时间】:2017-02-16 18:07:21
【问题描述】:
我有一个 Spring MVC 项目,我正在使用 Spring 4.3.0.RELEASE。
我正在为我的所有 DAOS 使用通用抽象类
public abstract class GenericDaoImpl {
@Autowired
protected JdbcTemplate jdbcTemplate;
}
@Repository
public class UserDAOImpl extends GenericDaoImpl implements UserDAO{
}
jdbcTemplate 在我的 auto-config.xml 中定义
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.password}" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
为了实现更接近该指南中的内容,我有:
将这些依赖项添加到我的 pom.xml 中:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
我已将 @EnableAspectJAutoProxy 添加到 @Configuration 类中。
我的观点是:
@Aspect
@Component
public class SqlParametersLogger {
private final Logger logger = LoggerFactory.getLogger(SqlParametersLogger.class);
@Before("execution(* org.springframework.jdbc.core.JdbcOperations.*(..))")
public void log(JoinPoint jp) {
logger.info("Hello?");
}
}
我的 Aspect 函数永远不会被调用。我已经用我的服务层的切入点尝试了这个方面,它可以工作。但是使用 JdbcOperations 就不行了。
有什么想法吗?
【问题讨论】:
标签: java spring aspectj spring-aop spring-jdbc