spring aop 配置及使用
来源:互联网 发布:知乐小说作品集 编辑:程序博客网 时间:2024/06/10 20:04
一、 xml配置
1.先写一个普通类:
package com.spring.aop;
public class Common {
public void execute(String username,String password){
System.out.println("------------------普通类----------------");
}
}
2.写一个切面类,用于合法性校验和日志添加:
package com.spring.aop;
public class Check {
public void checkValidity(){
System.out.println("------------------验证合法性----------------");
}
public void addLog(JoinPoint j){
System.out.println("------------------添加日志----------------");
Object obj[] = j.getArgs();
for(Object o :obj){
System.out.println(o);
}
System.out.println("========checkSecurity=="+j.getSignature().getName());//这个是获得方法名
}
}
3.xml配置配置Bean,打开AOP命名空间
<!-- 系统服务组件的切面Bean -->
<bean id="common" class="com.spring.aop.Common"/>
<bean id="check" class="com.spring.aop.Check"/>
<aop:aspectj-autoproxy/>即自动产生代理。
<aop:config>
<aop:aspect id="myAop" ref="check">
<aop:pointcut id="target" expression="execution(* com.spring.aop.Common.execute(..))"/> --- 定义需要加切面方法目标 切入点
<aop:before method="checkValidity" pointcut-ref="target"/>
<aop:after method="addLog" pointcut-ref="target"/>--最终通知
</aop:aspect>
</aop:config>
使用时:
BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext-aop.xml");
Common c=(Common) factory.getBean("common");
c.execute("zhengjunhua","zhengjunhua");
expression 表达式解释:
execution(* com.spring.aop.*.*(..))"/
这样写应该就可以了
这是com.spring.aop 包下所有的类的所有方法。。
第一个*代表所有的返回值类型
第二个*代表所有的类
第三个*代表类所有方法
最后一个..代表所有的参数。
二、annotation 注解形式
- /**
- * 切面
- * @author Bird
- *
- */
- @Aspect
- public class MyInterceptor {
- @Pointcut("execution(* com.bird.service.impl.PersonServiceBean.*(..))")
- private void anyMethod(){}//定义一个切入点
- @Before("anyMethod() && args(name)")
- public void doAccessCheck(String name){
- System.out.println(name);
- System.out.println("前置通知");
- }
- @AfterReturning("anyMethod()")
- public void doAfter(){
- System.out.println("后置通知");
- }
- @After("anyMethod()")
- public void after(){
- System.out.println("最终通知");
- }
- @AfterThrowing("anyMethod()")
- public void doAfterThrow(){
- System.out.println("例外通知");
- }
- @Around("anyMethod()")
- public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{
- System.out.println("进入环绕通知");
- Object object = pjp.proceed();//执行该方法
- System.out.println("退出方法");
- return object;
- }
- }
- 或者
//配置前置通知,拦截返回值为cn.ysh.studio.spring.mvc.bean.User的方法@Before("execution(cn.ysh.studio.spring.mvc.bean.User cn.ysh.studio.spring.aop.service..*(..))")public void beforeReturnUser(JoinPoint joinPoint){if(log.isInfoEnabled()){log.info("beforeReturnUser " + joinPoint);}}//配置前置通知,拦截参数为cn.ysh.studio.spring.mvc.bean.User的方法@Before("execution(* cn.ysh.studio.spring.aop.service..*(cn.ysh.studio.spring.mvc.bean.User))")public void beforeArgUser(JoinPoint joinPoint){if(log.isInfoEnabled()){log.info("beforeArgUser " + joinPoint);}}
- spring aop 配置及使用
- Spring之AOP基本概念及配置AOP
- Spring之AOP基本概念及配置AOP
- spring aop原理及使用
- 使用 来配置Spring AOP
- 使用注解配置spring aop
- 使用XML配置Spring AOP
- 使用注解配置Spring AOP
- Spring AOP配置及通知参数
- JAVA Spring 配置及IOC AOP相关
- Spring中AOP基本概念及配置方式
- Spring AOP/DI/IOC 简述及使用
- Spring的AOP使用xml配置
- spring使用AOP如何配置ApplicationContext.xml
- spring使用aop时xml中的配置
- 【Spring五】AOP之使用注解配置
- Spring的AOP使用xml配置
- Spring 配置使用 - AOP 通知类型
- C++ STL中Map的按Key排序和按Value排序
- c语言==一维数组与二维数组(2)
- Jenkins实现Android项目CI和二维码下载
- *.ftl文件中文乱码的解决办法:
- InnoDB 基本存储结构
- spring aop 配置及使用
- jquery contents()方法
- MYSQL的慢查询分析
- 使用org.apache.commons.io.FileUtils,IOUtils;工具类操作文件
- Android开发之动画效果浅析
- Android VideoView状态跟踪和错误处理
- jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
- Android控件--ClearEditText带清除功能的输入框
- java的传递与引用