跟杨春娟学Spring笔记:AOP之SpringAOP引介通知
跟杨春娟学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引介通知相关推荐
- 跟杨春娟学Spring笔记:表达式装配
跟杨春娟学Spring笔记:表达式装配 完成:第一遍 1.使用表达式注入有哪几种? 如果是表达式注入,必须在value里写#{表达式} 运算符:等于 符号: == 文本类型运算符: eq 运算符:小于 ...
- 跟杨春娟学Spring笔记:集合装配
跟杨春娟学Spring笔记:集合装配 完成:第一遍 1.常见集合元素有哪些? 集合元素 : 用途:装配list类型的值,允许重复 集合元素 : 用途:装配set类型的值,不允许重复 集合元素 : 用途 ...
- 跟杨春娟学Spring笔记:自动装备Bean
跟杨春娟学Spring笔记:自动装配Bean 完成:第一遍 1.如何自动装配Bean? 要使用自动装配,就需要配置< bean >元素的autowire属性 名称:byName 说明:根据 ...
- 跟杨春娟学SpringMVC笔记:Form表单之Spring验证框架
跟杨春娟学SpringMVC笔记:Form表单之Spring验证框架 完成:第一遍 1.Spring框架验证和JSR303验证的不同之处在哪里? 不同一:Spirng框架验证需要实现Validator ...
- 跟杨春娟学SpringMVC笔记:Form表单之JSR303验证
跟杨春娟学SpringMVC笔记:Form表单之JSR303验证 完成:第一遍 1.如何使用JSR303验证要先导入validation-api和hibernate-validator的依赖jar包? ...
- 【从零开始学Spring笔记】工厂类
大家可以关注作者的账号,关注从零开始学Spring笔记文集.也可以根据目录前往作者的博客园博客进行学习.本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法.欢迎大家一起学 ...
- spring的aop配置-配置将通知织入目标对象
咱们学习如何来进行配置,再新建一个包,d_springaop,然后配置文件需要单独在aop中配置一份,在这里面咱们来看一下,如何进行配置,首先在配置之前要有一个准备工作,咱们要用到新的名称空间了,又要 ...
- Spring之AOP的切点、通知、切点表达式以及知识要点
1.2.1.需要编写的内容 编写核心业务代码(目标类的目标方法) 编写切面类,切面类中有通知(增强功能方法) 在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合 1.2.2.AOP 技术实现 ...
- [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP
上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...
最新文章
- OpenAI解析「AI算力」:3个半月翻一倍,6年超过30万倍
- 安装android到u盘安装程序,在u盘内安装android教程
- 获取android手机的屏幕分辨率 android开发
- asp.net core 自定义异常处理中间件
- protobuf版本常见问题
- 1168:大整数加法--2022.01.22 AC
- python多因子量化选股模型_量化新兵第十步:多因子选股模型
- 编辑器之神Vim总结
- 如何在html中自动生成条形图,Highcharts 柱形图(柱状图及条形图)之通过HTML表格数据创建的柱状图演示...
- preHandle执行多次问题
- Spine 实用技巧大全
- 岭回归与lasso回归算法
- 勒索病毒SARA,请勿用于非法用途。
- java内存映射读取管道文件
- 网红达人培养思维导图
- UVM中component之间如何通信
- Aster“一拖二”,双键盘双鼠标双显示屏,互不影响
- max3490esa_MAX490EESA+T
- 【毕设狗】【单片机毕业设计】基于单片机的超市收银机控制系统的设计
- 应用COMSOL Multiphysics分析多分支缝第二条裂缝起裂点
热门文章
- 五年Java程序员进阶架构师的一些心得以及职业生涯规划
- Android 下实现APK加密功能
- 2017年第四届C/C++ A组蓝桥杯省赛真题
- 『Java安全』XStream 1.4-1.4.61.4.10反序列化漏洞CVE-2013-7285复现与浅析
- noip c语言,noip常用库函数(C语言)
- 3dMax 骨骼动画导入到Unity
- 解析模板 [index.html] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问
- 通过tushare的股票数据绘制股票各曲线图——周K线
- 2021-03-23 - 高性能 Redis 实战
- 【Excel自动化办公Part4】:调整字体与样式的操作——字体、边框、对齐格式、颜色填充