当前位置: 首页 > news >正文

spring框架之AOP注解方式(java代码实例)

目录

半注解形式:

业务层接口+实现类:

编写切面类:

在配置文件里面唯一需要加的:

测试类:

全注解形式:

不要配置文件,改为配置类:

同样的业务层接口+实现类:

同样的自定义切面类:

测试类改为不加载配置文件加载配置类:


半注解形式:

业务层接口+实现类:

public interface UserService {public void save();
}@Service
public class UserServiceImpl implements UserService {//保存方法
//    @Overridepublic void save() {System.out.println("业务层方法执行了!!!");//int i=5/0;}
}

编写切面类:

/*** @Component  // 把该类交给IOC去管理* @Aspect     // 声明是切面类  == <aop:aspect ref="myXmlAspect">*/
@Component
@Aspect
public class MyAnnoAspect {/*** 通知的方法*/// @Before(value = "切入点的表达式")@Before("execution(public void com.qcby.demo1.UserServiceImpl.save())")public void log(){System.out.println("前置方法执行了!!");}
}

在配置文件里面唯一需要加的:

1、开启注解扫描:

2、开启aop自动代理:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!--开启注解扫描 扫描所有被spring管理的类--><context:component-scan base-package="com.qcby"/><!--开启AOP注解支持--><aop:aspectj-autoproxy/>
</beans>

测试类:

/*** 测试类* 测试AOP的增强* @RunWith(SpringJUnit4ClassRunner.class)  声明为测试单元* @ContextConfiguration("classpath:applicationContext.xml")  加载配置文件*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestDemo1 {@Autowiredprivate UserService userService;@Testpublic void run(){userService.save();}
}

运行结果:

全注解形式:

不要配置文件,改为配置类:

@Configuration // 配置类
@ComponentScan(value = "com.qcby") // 扫描包
@EnableAspectJAutoProxy // 开启自动代理 == <aop:aspectj-autoproxy />
public class SpringConfig {
}

同样的业务层接口+实现类:

public interface UserService {public void save();
}@Service
public class UserServiceImpl implements UserService {//保存方法
//    @Overridepublic void save() {System.out.println("业务层方法执行了!!!");//int i=5/0;}
}

同样的自定义切面类:

/*** @Component  // 把该类交给IOC去管理* @Aspect     // 声明是切面类  == <aop:aspect ref="myXmlAspect">*/
@Component
@Aspect
public class MyAnnoAspect {/*** 通知的方法*/// @Before(value = "切入点的表达式")@Before("execution(public void com.qcby.demo1.UserServiceImpl.save())")public void log(){System.out.println("前置方法执行了!!");}
}

测试类改为不加载配置文件加载配置类:

/*** 测试类* 测试AOP的增强* @RunWith(SpringJUnit4ClassRunner.class)  声明为测试单元* @ContextConfiguration("classpath:applicationContext.xml")  加载配置文件*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class TestDemo1 {@Autowiredprivate UserService userService;@Testpublic void run(){userService.save();}
}

运行结果:

http://www.lryc.cn/news/401368.html

相关文章:

  • windows下gcc编译C、C++程序 MinGW编译器
  • uniapp启动图延时效果,启动图的配置
  • SQL,python,knime将数据混合的文字数字拆出来,合并计算(学习笔记)
  • 【算法】LRU缓存
  • 解决elementUI列表的疑难杂症,排序显示错乱的问题
  • 重大消息:手机车机互联投屏专题发布-千里马带你学框架
  • jail子系统里升级Ubuntu focal到jammy
  • 2024年7月20日(星期六)骑行支里山
  • Python:正则表达式相关整理
  • ChatGPT对话:有关花卉数据集
  • 特征向量及算法
  • cpp 强制转换
  • MySQL字符串魔法:拼接、截取、替换与定位的艺术
  • 在 Windows 上开发.NET MAUI 应用_1.安装开发环境
  • 深度学习驱动智能超材料设计与应用
  • Netty UDP
  • Spring Framework各种jar包官网下载2024年最新下载官方渠道。
  • 【Unity】RPG2D龙城纷争(十三)升级系统
  • 保障低压设备安全!中国星坤连接器精密工艺解析!
  • 中国星坤X0800HI系列线对板连接器:创新技术连接,引领智能家居未来!
  • SPring Boot整合第三方框架
  • 读取sqlserver数据库中varbinary(max)类型的内容,并将图片信息显示在前端页面
  • orcad导出pdf 缺少title block
  • XML 验证器:确保数据完整性和准确性的关键工具
  • opencv学习:图像视频的读取截取部分图像数据颜色通道提取合并颜色通道边界填充数值计算图像融合
  • 数据结构——单链表详解(超详细)(2)
  • 类和对象(2
  • AcWing 668. 游戏时间2
  • AI发展下的伦理挑战,应当如何应对?
  • Java面试题--JVM大厂篇之深入解析JVM中的Serial GC:工作原理与代际区别