AOP的MethodBeforeAdvice
使用Spring自动生成代理类,spring利用的是动态代理机制
接口
Java代码
public interface UserDao {
void addUser();
void deleteUser();
}
两个实现:
Java代码
public class UserDaoMySqlImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoMySqlImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoMySqlImpl.deleteUser()");
}
}
public class UserDaoOracleImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoOracleImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoOracleImpl.deleteUser()");
}
}
Device
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class UserDaoBeforeAdvice implements MethodBeforeAdvice {
@Override
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
System.out.println("UserDaoBeforeAdvice.before()");
}
}
spring的配置文件
Xml代码
<!-- 配置实现类的bean,可以把所有的实现类都写上 -->
<bean id="userdao" class="com.dowebber.spring.aop.UserDaoMySqlImpl"></bean>
<!--配置Advice的bean -->
<bean id="beforeadvice" class="com.dowebber.spring.aop.UserDaoBeforeAdvice"></bean>
<!--配置spring自动生成代理对象所需要的一些参数 -->
<bean id="userdaoproxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces" value="com.dowebber.spring.aop.UserDao"/>
<property name="target">
<ref bean="userdao"/>
</property>
<property name="interceptorNames">
<list>
<value>beforeadvice</value>
</list>
</property>
</bean>
测试类:
Java代码
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestUserDaoBeforeDevice {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("com/dowebber/spring/aop/spring.xml");
UserDao dao = (UserDao)context.getBean("userdaoproxy");
dao.addUser();
}
}
转载于:https://www.cnblogs.com/toSeeMyDream/p/4378970.html
AOP的MethodBeforeAdvice相关推荐
- 手撸Spring系列10:Spring AOP(实战篇)
说在前头: 笔者本人为大三在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...
- 简单两步,spring aop上手即用即会
面向切面思想在于它的干净,对逻辑代码没有任何侵入性,只需要在想要切入的方法或者类之上加上自定义的注解即可. 首先,就是自定义一个注解: //这里我们定义一个名为 @MyPointer 的注解 @Doc ...
- Spring AOP与IOC
Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId>&l ...
- Spring AOP与IOC以及自定义注解
Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId>&l ...
- Spring基础专题——第五章(Aop代理)
前言:去年到现在一直没有很好的时间完成这个spring基础+源码的博客目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从 ...
- [Spring 深度解析]第4章 Spring之AOP
第4章 ◄Spring之AOP► 在上一章节中,我们大致了解了Spring核心容器,了解了IOC思想在Spring中的具体应用Bean容器以及Bean的配置与使用,这一章我们将开始学习AOP在Spri ...
- 深入解析Spring架构与设计原理-AOP
2019独角兽企业重金招聘Python工程师标准>>> 关于AOP的个人理解 AOP联盟定义的AOP体系结构把与AOP相关的概念大致分为了由高到低.从使用到实现的三个层次.关于这个体 ...
- Spring从菜鸟到高手(二)AOP的真正实现
经过了前面一章的学习大家基本理解了SpringAOP的简单工作原理,但是那只是最基本的一些操作,Spring的设计师们知道我们不想在诸如得到一个代理类.需要实现哪些接口 这些琐碎的事情上牵扯过多的经历 ...
- aop的四种增强以及JDK动态代理、Cglib动态代理
动态代理 AOP底层实现:有接口自动应用的就是JDK动态代理 (1).JDK 在运行时运行时注入 本质:在内存中构建出接口的实现类 特点:被代理对象,必须有接口 实例: import java.lan ...
最新文章
- Linux串口原理与编程
- Sqlserver 错误日志太大导致硬盘空间不足
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2- “Tab”标签新增可“最大化”显示功能...
- SAP职业生涯中12个最致命想法
- HD 1253 胜利大逃亡(bfs)
- C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。
- Ant in Action读书笔记(三):在Ant中导入环境变量
- Onvif备忘录(2)----客户端端设备发现
- 微信小程序chooseImage(从本地相册选择图片或使用相机拍照)
- ArrayList Vector
- 单片机蜂鸣器编程音乐_工程师,还有6个引脚封装的单片机?涨知识了
- 【转】在唯一密钥属性“value”设置为“***”时,无法添加类型为“add”的重复集合项解决方法
- 修改R语言安装包的默认路径
- 各类文件的文件头标志
- html视频文件哪种格式好,常见的视频格式有哪些?
- php 图片 字母识别,PHP图片文字识别(OCR)
- 《Python渗透测试编程技术:方法与实践》:信息的利用(进阶)
- 网站备案和域名实名认证的重要性
- 要来了!国内安卓统一推送标准将于 今年3 月开启测试
- pygame-KidsCanCode系列jumpy-part18-背景滚动