Spring之AOP注解开发

Spring之AOP注解开发

12.2.6、基于注解的AOP开发

12.2.6.1 快速入门基于注解的aop开发步骤:

①创建目标接口和目标类(内部有切点)

②创建切面类(内部有增强方法)

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

④在切面类中使用注解配置织入关系

⑤在配置文件中开启组件扫描和 AOP 的自动代理

⑥测试

①创建目标接口和目标类(内部有切点)

代码语言:javascript代码运行次数:0运行复制public interface TargetInterface {

public void method();

}

public class Target implements TargetInterface {

@Override

public void method() {

System.out.println("Target running....");

}

}②创建切面类(内部有增强方法)

代码语言:javascript代码运行次数:0运行复制//切面类

public class MyAspect {

//前置增强方法

public void before(){

System.out.println("前置代码增强.....");

}

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

代码语言:javascript代码运行次数:0运行复制//实现目标接口

@Component("target")

public class Target implements TargetInterface {

@Override

public void method() {

System.out.println("Target running....");

}

}

@Component("myAspect")

public class MyAspect {

public void before(){

System.out.println("前置代码增强.....");

}

}④在切面类中使用注解配置织入关系

代码语言:javascript代码运行次数:0运行复制//注解配置切面类,配置织入

@Component("myAspect")

@Aspect

public class MyAspect {

@Before("execution(* com.itheima.aop.*.*(..))") //前置增强

public void before(){

System.out.println("前置代码增强.....");

}

}⑤在配置文件中开启组件扫描和 AOP 的自动代理

代码语言:javascript代码运行次数:0运行复制

⑥测试代码

代码语言:javascript代码运行次数:0运行复制//测试

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:applicationContext.xml")

public class AopTest {

@Autowired

private TargetInterface target;

@Test

public void test1(){

target.method();

}

}12.2.6.2 注解配置 AOP 详解1) 注解通知的类型通知的配置语法:@通知注解(“切点表达式")

2) 切点表达式的抽取同 xml配置

aop 一样,我们可以将切点表达式抽取。抽取方式是在切面内定义方法,在该方法上使用@Pointcut注解定义切点表达式,然后在在增强注解中进行引用。具体如下:

代码语言:javascript代码运行次数:0运行复制@@Component("myAspect")

@Aspect

public class MyAspect {

@Before("MyAspect.myPoint()")

public void before(){

System.out.println("前置代码增强.....");

}

@Pointcut("execution(* com.itheima.aop.*.*(..))")

public void myPoint(){

}

}12.2.6.3 知识要点注解aop开发步骤①使用@Aspect标注切面类

②使用@通知注解标注通知方法

③在配置文件中配置aop自动代理 aop:aspectj-autoproxy/

通知注解类型12.3.Aop在Spring中的作用提供声明式事务;允许用户自定义切面

横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点。如日志,安全,缓存,事务等等…。切面(ASPECT):横切关注点被模块化的特殊对象。即,它是一个类。通知(Advice):切面必须要完成的工作。即,它是类中的一个方法。目标(Target):被通知对象。代理(Poy):向目标对象应用通知之后创建的对象。切入点(PointCut):切面通知执行的"地点"的定义。连接点(JointPoint):与切入点匹配的执行点。SpringAOP中,通过Advice定义横切逻辑,Spring中支持5种类型的Advice:

相关推荐

抖店仓库管理在哪里设置
365赢30万不让提款

抖店仓库管理在哪里设置

📅 09-12 👁️ 8387
爲照片添加眼鏡:輕鬆打造時尚外觀的4種簡單方法
美好365app官方下载

爲照片添加眼鏡:輕鬆打造時尚外觀的4種簡單方法

📅 07-28 👁️ 3403
8尺等于多少米?
365bet手机网址

8尺等于多少米?

📅 07-30 👁️ 8715
免费下载动画片的app推荐2024
美好365app官方下载

免费下载动画片的app推荐2024

📅 09-15 👁️ 4346
二手家电市场冰箱在哪里
365赢30万不让提款

二手家电市场冰箱在哪里

📅 07-13 👁️ 982
嫱媛的意思解释,嫱媛是什么意思,嫱媛拼音怎么读
美好365app官方下载

嫱媛的意思解释,嫱媛是什么意思,嫱媛拼音怎么读

📅 08-29 👁️ 7151
哪个邮箱管理软件比较好用一点
365赢30万不让提款

哪个邮箱管理软件比较好用一点

📅 06-27 👁️ 5961
梦幻西游手游宠物冻结与CBG金币冻结规则解析
365赢30万不让提款

梦幻西游手游宠物冻结与CBG金币冻结规则解析

📅 09-17 👁️ 3501