跟杨春娟学Spring笔记:AOP之SpringAOP引介通知

完成:第一遍

1.如何代码实现AOP之SpringAOP引介通知?

IntroductionInterceptor(引介通知)
在目标类中添加一些新的方法和属性,可以应用于修改旧版本程 序(增强类)

UserDao

package com.adbycool.aop;public interface UserDao {public void addUser(String id,String name) ;}

UserDaoImpl

package com.adbycool.aop;public class UserDaoImpl implements UserDao {@Overridepublic void addUser(String id, String name) {System.out.println("=====这里是主要的逻辑代码区域:addUser()实现了======");}}

EUserDao

package com.adbycool.aop;public interface EUserDao {public void runE();
}

EUserDaoImpl

package com.adbycool.aop;import org.aopalliance.intercept.MethodInvocation;
import org.springframework.aop.IntroductionInterceptor;public class EUserDaoImpl implements EUserDao, IntroductionInterceptor {@Overridepublic Object invoke(MethodInvocation arg0) throws Throwable {if(implementsInterface(arg0.getMethod().getDeclaringClass())) {return arg0.getMethod().invoke(this, arg0.getArguments());}else {return arg0.proceed();}}@Overridepublic boolean implementsInterface(Class<?> arg0) {return arg0.isAssignableFrom(EUserDao.class);}@Overridepublic void runE() {System.out.println("===== 引介通知新增的方法runE()的逻辑实现 =====");}}

TestAop

package com.adbycool.aop;import static org.junit.jupiter.api.Assertions.*;import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;class TestAop {@Testvoid testEUserDao() {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = context.getBean("userDaoProxy",UserDao.class);((EUserDao)userDao).runE();userDao.addUser("1001", "zs");}}

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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.3.xsd"><!--目标对象:如果是接口,后面是实现类  --><bean id="userDao" class=" com.adbycool.aop.UserDaoImpl"></bean><bean id="eUserDao" class=" com.adbycool.aop.EUserDaoImpl"></bean><!--切面类  --><!--引介通知的配置  --><bean id="userDaoAspect" class="org.springframework.aop.support.DefaultIntroductionAdvisor"><constructor-arg ref="eUserDao"></constructor-arg><constructor-arg value="com.adbycool.aop.EUserDao"></constructor-arg></bean><bean id="userDaoProxy" class="org.springframework.aop.framework.ProxyFactoryBean"><property name="proxyInterfaces" value="com.adbycool.aop.UserDao"></property><property name="target" ref="userDao"></property>      <property name="interceptorNames"><list><value>userDaoAspect</value></list></property>        <property name="proxyTargetClass" value="false"></property></bean></beans>

跟杨春娟学Spring笔记:AOP之SpringAOP引介通知相关推荐

  1. 跟杨春娟学Spring笔记:表达式装配

    跟杨春娟学Spring笔记:表达式装配 完成:第一遍 1.使用表达式注入有哪几种? 如果是表达式注入,必须在value里写#{表达式} 运算符:等于 符号: == 文本类型运算符: eq 运算符:小于 ...

  2. 跟杨春娟学Spring笔记:集合装配

    跟杨春娟学Spring笔记:集合装配 完成:第一遍 1.常见集合元素有哪些? 集合元素 : 用途:装配list类型的值,允许重复 集合元素 : 用途:装配set类型的值,不允许重复 集合元素 : 用途 ...

  3. 跟杨春娟学Spring笔记:自动装备Bean

    跟杨春娟学Spring笔记:自动装配Bean 完成:第一遍 1.如何自动装配Bean? 要使用自动装配,就需要配置< bean >元素的autowire属性 名称:byName 说明:根据 ...

  4. 跟杨春娟学SpringMVC笔记:Form表单之Spring验证框架

    跟杨春娟学SpringMVC笔记:Form表单之Spring验证框架 完成:第一遍 1.Spring框架验证和JSR303验证的不同之处在哪里? 不同一:Spirng框架验证需要实现Validator ...

  5. 跟杨春娟学SpringMVC笔记:Form表单之JSR303验证

    跟杨春娟学SpringMVC笔记:Form表单之JSR303验证 完成:第一遍 1.如何使用JSR303验证要先导入validation-api和hibernate-validator的依赖jar包? ...

  6. 【从零开始学Spring笔记】工厂类

    大家可以关注作者的账号,关注从零开始学Spring笔记文集.也可以根据目录前往作者的博客园博客进行学习.本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法.欢迎大家一起学 ...

  7. spring的aop配置-配置将通知织入目标对象

    咱们学习如何来进行配置,再新建一个包,d_springaop,然后配置文件需要单独在aop中配置一份,在这里面咱们来看一下,如何进行配置,首先在配置之前要有一个准备工作,咱们要用到新的名称空间了,又要 ...

  8. Spring之AOP的切点、通知、切点表达式以及知识要点

    1.2.1.需要编写的内容 编写核心业务代码(目标类的目标方法) 编写切面类,切面类中有通知(增强功能方法) 在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合 1.2.2.AOP 技术实现 ...

  9. [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...

最新文章

  1. OpenAI解析「AI算力」:3个半月翻一倍,6年超过30万倍
  2. 安装android到u盘安装程序,在u盘内安装android教程
  3. 获取android手机的屏幕分辨率 android开发
  4. asp.net core 自定义异常处理中间件
  5. protobuf版本常见问题
  6. 1168:大整数加法--2022.01.22 AC
  7. python多因子量化选股模型_量化新兵第十步:多因子选股模型
  8. 编辑器之神Vim总结
  9. 如何在html中自动生成条形图,Highcharts 柱形图(柱状图及条形图)之通过HTML表格数据创建的柱状图演示...
  10. preHandle执行多次问题
  11. Spine 实用技巧大全
  12. 岭回归与lasso回归算法
  13. 勒索病毒SARA,请勿用于非法用途。
  14. java内存映射读取管道文件
  15. 网红达人培养思维导图
  16. UVM中component之间如何通信
  17. Aster“一拖二”,双键盘双鼠标双显示屏,互不影响
  18. max3490esa_MAX490EESA+T
  19. 【毕设狗】【单片机毕业设计】基于单片机的超市收银机控制系统的设计
  20. 应用COMSOL Multiphysics分析多分支缝第二条裂缝起裂点

热门文章

  1. 五年Java程序员进阶架构师的一些心得以及职业生涯规划
  2. Android 下实现APK加密功能
  3. 2017年第四届C/C++ A组蓝桥杯省赛真题
  4. 『Java安全』XStream 1.4-1.4.61.4.10反序列化漏洞CVE-2013-7285复现与浅析
  5. noip c语言,noip常用库函数(C语言)
  6. 3dMax 骨骼动画导入到Unity
  7. 解析模板 [index.html] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问
  8. 通过tushare的股票数据绘制股票各曲线图——周K线
  9. 2021-03-23 - 高性能 Redis 实战
  10. 【Excel自动化办公Part4】:调整字体与样式的操作——字体、边框、对齐格式、颜色填充