aspect会创建容器对象吗(AspectJ开发)
aspect会创建容器对象吗(AspectJ开发)2.在目标类 com.three.the3_4_1.UserDaolmpl 中 , 添加注解@Repository("userDao")这里首先使用@Aspect注解定义了切面类,由于该类在Spring中是作为组件使用的,所以还需要添加@Component注解才能生效。然后使用了@Poincut注解来配置切入点表达式,并通过定义方法来表示切入点名称。接下来在每个通知相应的方法上添加了相应的注解,并将切入点名称"myPointCut"作为参数传递给需要执行增强的通知方法。3.在创建的包下,创建测试类test,在类中为了更加清晰地演示几种通知的执行情况,这里对addUser()和deleteUser()进行增强测试4.结果1.在项目的 src 目录下,创建一个包(com.three.the3_4_2),将上面示例的切面类 myAspect 复制到该包下,并对该文
AspectJ是一个基于Java语言的AOP框架,它提供了强大的AOP功能。Spring 2.0以后,Spring AOP引入了对AspectJ的支持,并允许直接使用AspectJ进行编程,而Spring自身的AOP API也尽量与AspectJ保持一致。新版本的Spring框架,也建议使用AspectJ来开发AOP。使用AspectJ实现AOP有两种方式:一种是基于XML的声明式AspectJ,另一种是基于注解的声明式AspectJ。
基于XML的声明式AspectJ
1.在项目的src目录下,创建一个包(示例:com.three.the3_4_1),在该包中创建切面类myAspect,并在类中分别定义不同类型的通知。
myAspect类中分别定义了5种不同类型的通知,在通知中使用了JoinPoint接口及其子接口ProceedingJoinPoint作为参数来获得目标对象的类名、目标方法名和目标方法参数等。需要注意的是,环绕通知必须接收一个类型为ProceedingJoinPoint的参数,返回值也必须是Object类型,且必须抛出异常。异常通知中可以传入Throwable类型的参数来输出异常信息。
2.在创建的包中,创建配置文件applicationContext.xml
3.在创建的包下,创建测试类test,在类中为了更加清晰地演示几种通知的执行情况,这里对addUser()和deleteUser()进行增强测试
4.结果
墓于注解的声明式 AspectJ
1.在项目的 src 目录下,创建一个包(com.three.the3_4_2),将上面示例的切面类 myAspect 复制到该包下,并对该文件进行编辑
这里首先使用@Aspect注解定义了切面类,由于该类在Spring中是作为组件使用的,所以还需要添加@Component注解才能生效。然后使用了@Poincut注解来配置切入点表达式,并通过定义方法来表示切入点名称。接下来在每个通知相应的方法上添加了相应的注解,并将切入点名称"myPointCut"作为参数传递给需要执行增强的通知方法。
2.在目标类 com.three.the3_4_1.UserDaolmpl 中 , 添加注解@Repository("userDao")
3.在创建的包下,创建配置文件 applicationContext.xml
4.与上面示例的测试基本一致,知识配置路径不同
5.结果