ITCAST视频-Spring学习笔记(使用JDK中的Proxy技术实现AOP功能)
感谢ITCAST发布的免费视频。
AOP—代理对象
1. 拦截所有业务方法
2. 判断用户是否有权限,由权限就允许它执行业务方法,没有权限不允许执行业务方法。
代理对象创建由两种:静态代理,动态代理
应用的条件是目标对象必须实现接口
横切性关注点
Source:
public interface PersonService {
public void save(String name);
public void update(String name, Integer personid);
public String getPersonName(Integer personid);
}
public class PersonServiceBean implements PersonService {
private String user = null;
public PersonServiceBean() {
}
public PersonServiceBean(String user) {
this.user = user;
}
public String getPersonName(Integer personid) {
// TODO Auto-generated method stub
System.out.println("I'm getPersonName.");
return "XXX";
}
public void save(String name) {
// TODO Auto-generated method stub
System.out.println("I'm save.");
}
public void update(String name, Integer personid) {
// TODO Auto-generated method stub
System.out.println("I'm update.");
}
public String getUser() {
return user;
}
}
public class JDKProxyFactory implements InvocationHandler {
private Object targetObject;
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
PersonServiceBean bean = (PersonServiceBean) this.targetObject;
Object result = null;
if (bean.getUser() != null) {
result = method.invoke(targetObject, args);
}
return result;
}
public Object createProxyInstance(Object targetObject) {
this.targetObject = targetObject;
return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
this.targetObject.getClass().getInterfaces(), this);
}
}
public class AOPTest {
@Test
public void proxyTest() {
JDKProxyFactory factory = new JDKProxyFactory();
PersonService service = (PersonService) factory.createProxyInstance(new PersonServiceBean());
service.getPersonName(1);
}
}
转载于:https://www.cnblogs.com/tongzhiyong/archive/2009/02/09/1387067.html
ITCAST视频-Spring学习笔记(使用JDK中的Proxy技术实现AOP功能)相关推荐
- (转)使用JDK中的Proxy技术实现AOP功能
http://blog.csdn.net/yerenyuan_pku/article/details/52863780 AOP技术在企业开发中或多或少都会用到,但用的最多的大概就是做权限系统时,在做权 ...
- uni中动态加载class_SpringBoot中使用LoadTimeWeaving技术实现AOP功能
1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 AOP--面向切面编程,通过为目标类织入切面的方式,实现对目标类功能的增强.按切面被织如到目标类中的时间划分,主要有以下几 ...
- 【异步编程学习笔记】JDK中的FutureTask和CompletableFuture详解(使用示例、源码)
文章目录 FutureTask概述 使用实例 类图结构 FutureTask的run()方法 FutureTask的局限性 CompletableFuture概述 CompletableFuture代 ...
- 【学习笔记】OFDM中信道估计技术分析与实现
目录 一.信道估计概念 二.信道估计作用 三.相干检测与非相干检测 (一)非相干检测 (二)相干检测 (三)注意 四.影响信道估计算法性能的重要因素 五.信道估计方法的划分 (一)根据处理域的不同, ...
- 20.Spring学习笔记_基于配置文件的方式来配置 AOP(by尚硅谷_佟刚)
基于 XML 的配置声明切面 除了使用 AspectJ 注解声明切面, Spring 也支持在 Bean 配置文件中声明切面. 这种声明是通过 aop schema 中的 XML 元素完成的. 正常情 ...
- Spring学习笔记(三) AOP_annotation,AOP_XML
在学习课程以前,听说AOP有种很神秘的感觉,好像很好深的技术.其实原理很简单,使用动态代理的方式给程序增加逻辑.与此相似的有struts2中的filter拦截器. 再讲AOP之前先把需求说一下: 同S ...
- java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间
资源名称:Java JDK 8学习笔记 PDF 内容简介: ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念.操作.应用等问题及解决方案 ●针对Java SE 8新功能 ...
- Spring 学习笔记----->AOP
Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...
- JavaEE——Spring学习笔记03【AOP开发】
JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...
最新文章
- 当莎士比亚遇见Google Flax:教你用​字符级语言模型和归递神经网络写“莎士比亚”式句子...
- 不会英语计算机开车和,驾校学车的那些事儿——技术篇
- WAF果真是个好东西
- 利用WDS实现零接触部署Windows 7 VHD
- probable oracle net,ORA-28547: connection to server failed, probable Oracle Net admin error
- DCMTK:OFStandard类的测试程序
- 《spring-boot学习》-03-入门
- mba案例分析_2020年(第八届)MBA企业案例分析实践课程暨大赛完美收官!
- 苹果回应:iPhone 11用北斗导航作为位置数据系统一部分;马云回应年轻人去做快递小哥;Linux Lab发布v0.5 rc3| 极客头条
- 1. 3款免费好用的Markdown笔记应用,可以替代印象笔记
- nodejs真的是单线程吗?
- C4D插件X-Particles粒子特效(七)
- xp计算机怎么共享网络,xp系统手机usb共享网络上网,xp共享上网-
- 我的Python心路历程 第十期 (10.12 股票实战可视化之分位数)
- 《商业分析实践指南》(一)
- 打怪小游戏(快做完了)
- 如何搞定你喜欢的美术妹纸?
- Windows 安全资料库网站
- 1990-2020年江苏省全省人口数、户数(常住)
- kafka: dial tcp: lookup xxxx(domain): no such host
热门文章
- mybatis基于注解的入门案例
- 飞思卡尔智能车iar工程常见问题
- python 3读网页文件及保存成本地文件,遇到的编码问题
- 【跟网上的大多数不一样】rstudio plot不显示图片了
- 【解决方案】win10连接wifi输入密码之后用户就消失了
- Python剑指offer:矩形覆盖问题
- 矩阵二范数(norm)
- linux的内核是指的什么,[科普] Linux 的内核与 Linux 系统之间的关系
- qq邮箱格式的Java代码_Java实现QQ邮件发送
- mysql报错3534_win7下安装MYSQL报错:MYSQL 服务无法启动的3534问题