环境:spring2.5.x+jdk8
1、用xml配置。
思路:配置一个切面,然而配置pointcut,再然后配置advice.
下面是例子
<?xml version="1.0" encoding="UTF-8"?> <!-- - Application context definition for JPetStore's business layer. - Contains bean references to the transaction manager and to the DAOs in - dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation"). --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="loginimpl" class="springaoptest1.LoginImpl"> </bean> <bean id="securityHandler" class="springaoptest1.SecurityHandler"> </bean> <aop:config> <aop:aspect id="securityAspect" ref="securityHandler"> <aop:pointcut id="pointcut" expression="execution(* login*(..))"/> <!-- 注意,method必须是切面中存在的方法 --> <aop:before method="checkSecurity" pointcut-ref="pointcut"/> </aop:aspect> </aop:config> </beans>
2、用注解
package springaoptest1;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class SecurityHandler {
@Pointcut("within(login*)")
public void loginloginxx(){
}
@Before("loginloginxx()")
public void checkSecurity(){
System.out.println("Security check...");
}
}
refurl:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html 官网的配置