Spring学习笔记(二) -aop
?
要进行AOP编程,首先就要引入aop命名空间,Spring提供了两种切面方式,实际工作中我们可以任选其一:
切面类:
public class Security { //切面
public void checkSecurity(JoinPoint joinPoint){ //通知
System.out.println("进行安全检查 ");
}
}
如果使用XML配置方式,需要在文件中使用<aop:config>标签,如:
<bean id="security" class="切面类" /><!-- 定义切面对象 -->
<bean id="userManager" class="目标对象类" /><!--创建接口实现类对象-->
<aop:config> <!--所有的切面和通知都必须定义在aop:config元素内部 -->
<aop:aspect ref="security"> <!-- 声明切面 -->
<!-- 声明切入点 -->
<aop:pointcut id="userManagerPointcut"
expression="execution(* *.*(..))"/>
<!--声明后置通知,在匹配的方法完全执行后运行-->
<aop:after-returning method="checkSecurity" pointcut-ref="userManagerPointcut"/>
</aop:aspect>
</aop:config>
?
如果想在通知中获取相关数据,任何通知方法可以将第一个参数定义为 ? 更多信息请查看?java进阶网?http://www.javady.com * @param joinPoint
*/
@Before("perform()||perform1()") //可以使用多个切入点,用||隔开
public void checkSecurity(JoinPoint joinPoint){
System.out.println("进行安全性检查");
if(joinPoint.getArgs()!=null&&joinPoint.getArgs().length>0){
for(int i=0;i<joinPoint.getArgs().length;i++){
System.out.println("方法的参数 "+joinPoint.getArgs()[i]);
}
}
//获取方法的签名,方法的名称,方法的返回类型
Signature signature=joinPoint.getSignature();
System.out.println("方法的名称 "+signature.getName());
}