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

(注解配置AOP)学习Spring的第十七天

 基于注解配置的AOP

来看注解式开发 : 

先把目标与通知放到Spring里管理  :


@Service("userService")
public class UserServiceImpl implements UserService {@Overridepublic void show1() {System.out.println("show1......");}@Overridepublic void show2() {System.out.println("show2......");}
}

 看这个通知 ,加@Aspect开始编辑织入 , @Before()里放的是切入点配置:

@Component
@Aspect
public class MyAdvice {//  <aop:before method="beforeAdvice" pointcut-ref="execution(* com.itheima.service.impl.*.*(..))"/>@Before("execution(* com.itheima.service.impl.*.*(..))")public void beforeAdvice() {System.out.println("前置的增强....");}}

还需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: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"><!--组件扫描--><context:component-scan base-package="com.itheima"/><!--使用注解配置AOP,需要开启AOP自动代理--><aop:aspectj-autoproxy/></beans>

 如此 , 注解配置就完成了

下图是整体配置信息对比

二 . 切点表达式的抽取

用@Poincut代替了

execution(* com.itheima.service.impl.*.*(..)) , 是操作更加方便

代码如下 :

 @Pointcut("execution(* com.itheima.service.impl.*.*(..))")public void myPoincut(){}//  <aop:before method="beforeAdvice" pointcut-ref="execution(* com.itheima.service.impl.*.*(..))"/>@Before("MyAdvice.myPoincut()")public void beforeAdvice() {System.out.println("前置的增强....");}

三 .代替xml配置方式

新建一个SpringConfig配置类来管理扫描注解

代码如下

@Configuration
@ComponentScan("com.itheima")    // <context:component-scan base-package="com.itheima"/>
@EnableAspectJAutoProxy   //<aop:aspectj-autoproxy/>
public class SpringConfig {}

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

相关文章:

  • [C++] opencv + qt 创建带滚动条的图像显示窗口代替imshow
  • C#用Array类的Reverse方法反转数组中元素
  • iOS AlDente 1.0自动防过充, 拯救电池健康度
  • 春晚刘谦魔术——约瑟夫环
  • itextpdf使用:使用PdfReader添加图片水印
  • 如何为Kafka加上账号密码(二)
  • 【大数据】Flink on YARN,如何确定 TaskManager 数
  • ES节点故障的容错方案
  • 【Flink】FlinkSQL实现数据从Kafka到MySQL
  • Unity GC
  • Vue源码系列讲解——变化侦测篇【下】(Array的变化侦测)
  • 【机器学习笔记】贝叶斯学习
  • ElasticSearch之倒排索引
  • win11安装mysql8.3.0压缩包版 240206
  • 数据库索引与优化:深入了解索引的种类、使用与优化
  • React 错误边界组件 react-error-boundary 源码解析
  • 分享66个相册特效,总有一款适合您
  • chagpt的原理详解
  • dockerfile 详细讲解
  • 跟着pink老师前端入门教程-day23
  • JRT监听程序
  • MCU+SFU视频会议一体化,视频监控,指挥调度(AR远程协助)媒体中心解决方案。
  • 1184. 欧拉回路(欧拉回路,模板题)
  • 学习 Redis 基础数据结构,不讲虚的。
  • Android 11 webview webrtc无法使用问题
  • 嵌入式单片机中晶振的工作原理
  • AWS配置内网EC2服务器上网【图形化配置】
  • Android中的MVVM
  • 制作耳机壳的UV树脂和塑料材质相比劣势有哪些?
  • CSP-202012-1-期末预测之安全指数