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

spring模块(三)Spring AOP(2)使用

一、demo

 1、spring项目

(1)pom

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.13.RELEASE</version><scope>runtime</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.10</version></dependency><dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.10</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies>

(2)applicationContext.xml配置文件 

<?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:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.demo"></context:component-scan><aop:aspectj-autoproxy />
</beans>

(3)业务代码 

@Service
public class EmployeeService {public int addEmployee(Employee emp) {System.out.println("添加员工成功");return 0;}public int delEmployee(Employee emp) {System.out.println("删除员工成功");return 0;}public int updateEmployee(Employee emp) {System.out.println("修改员工成功");return 0;}public Employee findEmployee(String empno) {System.out.println("查询员工成功");return new Employee();}
}
@Service
public class PersonService{public void save(String name) {System.out.println("我是save()方法");}public void update(String name, Integer id) {System.out.println("我是update()方法");}public String getPersonName(Integer id) {System.out.println("我是getPersonName()方法");return "xxx";}}

 (4)AOP:

@Aspect
@Component
public class MyInterceptor {@Pointcut("execution (* com.demo.service.PersonService.add*(..))")private void anyMethod() {} // 声明一个切入点,anyMethod为切入点名称@Pointcut("execution (* com.demo.service.EmployeeService.update*(..))")private void anotherMethod() {}// 声明该方法是一个前置通知:在目标方法开始之前执行 @Before("anyMethod()")public void doAccessCheck() {System.out.println("前置通知");}@After(value = "anyMethod()")public void closeResource() {System.out.println("关闭数据库连接");}@Before("anotherMethod()")public void openSession() {System.out.println("开启session");}
}

(5)测试:

public class SpringAOPTest {@Testpublic void interceptorTest() {ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");EmployeeService employeeService = (EmployeeService) cxt.getBean("employeeService");
//		personService.save("xxx");
//		personService.update("zhangsan", 1);
//		personService.getPersonName(1);employeeService.updateEmployee(new Employee());}
}

2、springboot项目

相关文章:

  • Django的模型层
  • [图解]产品经理-竞赛题解析:阿布思考法和EA
  • jQuery实现瀑布流
  • css3 笔记01
  • MFC密码对话框之间数据传送实例(源码下载)
  • 打造有情感的AI智能体-情感问答
  • 如何解决0.1+0.2!=0.3的问题
  • 手机上制作证件照
  • gerrit自启动方案—windows服务
  • 1.手动LogisticRegression模型的训练和预测
  • Thinkphp内核开发盲盒商城源码v2.0 对接易支付/阿里云短信/七牛云存储
  • linux系统——top资源管理器
  • Lua 基础 03 常用函数
  • 云端力量:利用移动云服务器高效部署Spring Boot Web应用
  • 等保2.0看这一篇就够了
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • co模块的前端实现
  • C语言笔记(第一章:C语言编程)
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Github访问慢解决办法
  • KMP算法及优化
  • k个最大的数及变种小结
  • Linux Process Manage
  • Markdown 语法简单说明
  • 闭包--闭包作用之保存(一)
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端相关框架总和
  • 前端之React实战:创建跨平台的项目架构
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​MySQL主从复制一致性检测
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (HAL库版)freeRTOS移植STMF103
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Note)C++中的继承方式
  • (二十六)Java 数据结构
  • (七)Flink Watermark
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (转载)利用webkit抓取动态网页和链接
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .bat文件调用java类的main方法
  • .htaccess 强制https 单独排除某个目录
  • .NET Core 版本不支持的问题
  • .NET Core中的时区转换问题
  • .Net Web窗口页属性
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证