spring学习笔记十六

news/2024/11/29 20:31:45/

AOP面向切面编程

1、导入pom坐标

 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency>

2、SpringConfig配置类

@Configuration
@ComponentScan("com.itheima")
@EnableAspectJAutoProxy
public class SpringConfig {}
  • @Configuration  设置为配置类
  • @ComponentScan  扫描路径
  • @EnableAspectJAutoProxy   开启AOP切面编程

3、BookDao接口和实现类

public interface BookDao {void save();void update();
}@Repository
public class BookDaoImpl implements BookDao {public void save(){System.out.println("book save....");}public void update() {System.out.println("book update ...");}
}

 4、AOP类

@Component
@Aspect
public class MyAdvice {//@Pointcut("execution(void com.itheima.dao.BookDao.update())")@Pointcut("execution(void com.itheima..BookDao.update())")private  void pt(){}//前置@Before("pt()")public void before(JoinPoint jp){System.out.println(System.currentTimeMillis());}//  后置@After("pt()")public void after(){System.out.println("after .....");}//环绕  通知@Around("pt()")public Object around(ProceedingJoinPoint pjd) throws Throwable {System.out.println("before around....");// 有返回值需要返回下Object ret = pjd.proceed();System.out.println("after around....");return ret;}// 执行成功后通知@AfterReturning(value = "pt()", returning = "ret")public void afterReturning(Object ret){System.out.println("after returning ..."+ ret);}// 抛出一场后通知@AfterThrowing(value = "pt()", throwing = "err")public void afterThrowing(Throwable err){System.out.println("after throwing..."+ err);}
}

5、使用方法

 public static void main(String[] args) {ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = ctx.getBean(BookDao.class);bookDao.update();}


http://www.ppmy.cn/news/979106.html

相关文章

【MyBatis-Plus 进阶学习笔记】

MyBatis-Plus 进阶学习笔记记录 一、 MyBatis Plus 七大功能0. 数据准备1. 逻辑删除2. 自动填充2.1 优化1 自动填充 有的类没有更新和创建时间字段2.2 优化2 自己设置时间时填充自己设置的&#xff0c;不设置时自动填充 3. 乐观锁插件 注&#xff1a;wrapper不能服用4. 性能分析…

Redis DeskTop Manager 使用教程

简单粗暴的介绍一下&#xff0c;以及在工作中如何去使用工具管理我们的Redis&#xff0c;更加详细及深入的使用方法欢迎大家评论区讨论&#xff0c;我也和大家一起学习。 简介&#xff1a; Redis Desktop Manager (RDM) 是一个开源的图形化 Redis 数据库管理工具&#xff0c;…

解决 npm ERR! missing script: build 错误的方法

系列文章目录 文章目录 系列文章目录前言一、错误原因二、解决方法&#xff1a;三、注意事项&#xff1a;总结 前言 在使用 npm 进行前端项目构建时&#xff0c;有时会遇到错误信息 “npm ERR! missing script: build”&#xff0c;该错误通常发生在没有定义构建脚本时。本文将…

RocketMQ教程-安装和配置

Linux系统安装配置 64位操作系统&#xff0c;推荐 Linux/Unix/macOS 64位 JDK 1.8 Maven3.0 yum 安装jdk8 yum 安装maven 1.下载安装Apache RocketMQ RocketMQ 的安装包分为两种&#xff0c;二进制包和源码包。 点击这里 下载 Apache RocketMQ 5.1.3的源码包。你也可以从这…

STM32 Flash学习(一)

STM32 FLASH简介 不同型号的STM32&#xff0c;其Flash容量也不同。 MiniSTM32开发板选择的STM32F103RCT6的FLASH容量为256K字节&#xff0c;属于大容量产品。 STM32的闪存模块由&#xff1a;主存储器、信息块和闪存存储器接口寄存器等3部分组成。 主存储器&#xff0c;该部分…

交换机的学习和Vlan技术(第二十课)

交换机的学习和Vlan技术(第二十课) 一 冲突域 1 什么是冲突域 1)在一个网络范围内发送数据时会产生冲突的区域就是冲突域 2)冲突是以太网致命故障,导致信号冲突,数据损坏、丢失、数据传输慢 2 接口的双工模式 1、什么是冲突域 1)在一个网络范围内发送数据时会产生…

云安全攻防(一)之 云原生

前言 随着公有云和私有云的广泛部署&#xff0c;云计算基础设施成为企业部署新业务的首选。可以说&#xff0c;云计算已进入下半场&#xff0c;各大云计算服务商的厮杀日益激烈&#xff0c;新的概念也不断的层出不穷。近年来&#xff0c;云原生安全&#xff08;Cloud Native C…

挑战css基础面试题

挑战css基础面试题一&#xff0c;看看你能做出来吗 文章目录 前言一、盒模型二、如何实现一个最大的正方形三、文本一行水平居中&#xff0c;多行居左四、画一个三角形五、BFC理解六、两栏布局&#xff0c;左边固定&#xff0c;右边自适应&#xff0c;左右不重叠最后 前言 本片…