栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于 XML 的 AOP 开发

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于 XML 的 AOP 开发

基于 XML 的 AOP 开发

前言一、基于 XML 的 AOP 开发

1. 快速入门

1.1 导入 AOP 相关坐标1.2 创建目标接口和目标类(内部有切点)1.3 创建切面类(内部有增强方法)1.4 将目标类和切面类的对象创建权交给 spring1.5 测试代码1.6 测试结果 2 XML 配置 AOP 详解

2.1 切点表达式的写法2.2 通知的类型2.3 切点表达式的抽取2.4 aop织入的配置 总结


前言

通过前面学习AOP技术,了解到AOP的强大,AOP便于开发,减少程序员的再次对项目的思考


一、基于 XML 的 AOP 开发 1. 快速入门

① 导入 AOP 相关坐标
② 创建目标接口和目标类(内部有切点)
③ 创建切面类(内部有增强方法)
④ 将目标类和切面类的对象创建权交给 spring
⑤ 在 applicationContext.xml 中配置织入关系
⑥ 测试代码

1.1 导入 AOP 相关坐标

      org.springframework
      spring-context
      5.0.5.RELEASE
    
    
      org.aspectj
      aspectjweaver
      1.8.4
    
1.2 创建目标接口和目标类(内部有切点)
public interface TargetInterface {
    public void save();
}

public class Target implements TargetInterface {

    public void save() {
        System.out.println("save running.........");
    }
}
1.3 创建切面类(内部有增强方法)
public class MyAspect {

    public void before(){
        System.out.println("前置增强.........");
    }

    public void afterReturning(){
        System.out.println("后置增强.........");
    }

    //ProceedingJoinPoint:Proceeding  JoinPoint  正在执行的连接点==切点
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("环绕前增强.........");
        Object proceed = pjp.proceed();//切点方法
        System.out.println("环绕后增强.........");
        return proceed;
    }

    public void afterThrowing(){
        System.out.println("异常抛出增强.........");
    }

    public void after(){
        System.out.println("最终增强.........");
    }

}
1.4 将目标类和切面类的对象创建权交给 spring

在 applicationContext.xml 中配置织入关系导入aop命名空间
在 applicationContext.xml 中配置织入关系配置切点表达式和前置增强的织入关系




    
    
    
    

    
    
        
        
            
            
            
            
            
            
            
            
            
            
        
    


1.5 测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AopTest {
	@Autowired
	private TargetInterface target;
	@Test
	public void test1(){
		target.method();
	}
}
1.6 测试结果

2 XML 配置 AOP 详解 2.1 切点表达式的写法

表达式语法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))

访问修饰符可以省略
1.返回值类型、包名、类名、方法名可以使用星号* 代表任意
2.包名与类名之间一个点 . 代表当前包下的类,两个点 … 表示当前包及其子包下的类
3.参数列表可以使用两个点 … 表示任意个数,任意类型的参数列表
表达式语法:

execution(public void com.itheima.aop.Target.method())
execution(void com.itheima.aop.Target.*(..))
execution(* com.itheima.aop.*.*(..))
execution(* com.itheima.aop..*.*(..))
execution(* *..*.*(..))
2.2 通知的类型

通知的配置语法:

名称标签说明
前置通知用于配置前置通知。指定增强的方法在切入点方法之前执行
后置通知用于配置后置通知。指定增强的方法在切入点方法之后执行
环绕通知用于配置环绕通知。指定增强的方法在切入点方法之前和之后都执行
异常抛出通知用于配置异常抛出通知。指定增强的方法在出现异常时执行
最终通知用于配置最终通知。无论增强方式执行是否有异常都会执行
2.3 切点表达式的抽取

当多个增强的切点表达式相同时,可以将切点表达式进行抽取,在增强中使用 pointcut-ref 属性代替 pointcut 属性来引用抽取后的切点表达式。


	
	
		
		
	

2.4 aop织入的配置

	
		
	

通知的类型:前置通知、后置通知、环绕通知、异常抛出通知、最终通知
切点表达式的写法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))


总结

Spring学习原先就是通过在spring的配置文件上操作,从而减少对原先代码的操作,所以先开始可能会感觉麻烦,但是下面在学习基于注解的 AOP 开发之后,会发现在代码量少的情况下还是原来的好,但是大工程下还是下面的香。加油,卷。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号