我想要做這樣的事情:http://www.gotoquiz.com/web-coding/programming/java-programming/log-sql-statements-with-parameter-values-filled-in-spring-jdbc/在JdbcOperations使用Spring AOP的看點不調用
我有一個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在我的自動-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?");
}
}
我的方面的功能不會被調用。我已經用我的服務層的切入點嘗試了這個方面,並且它可以工作。但使用JdbcOperations它不起作用。
有什麼想法?
感謝您的回覆@Alex。我已經改變了 '@Before( 「執行(* org.springframework.jdbc.core.JdbcOperations。* (..))」)' 到 '@Before(「執行(* org.springframework .jdbc.core.JdbcOperations +。*(..))「)'但仍然沒有調用方面。 –
我甚至試圖直接將它設置爲'@Before(「execution(* org.springframework.jdbc.core.JdbcTemplate。*(..))」)',但也沒有調用Aspect –