感谢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功能)相关推荐

  1. (转)使用JDK中的Proxy技术实现AOP功能

    http://blog.csdn.net/yerenyuan_pku/article/details/52863780 AOP技术在企业开发中或多或少都会用到,但用的最多的大概就是做权限系统时,在做权 ...

  2. uni中动态加载class_SpringBoot中使用LoadTimeWeaving技术实现AOP功能

    1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 AOP--面向切面编程,通过为目标类织入切面的方式,实现对目标类功能的增强.按切面被织如到目标类中的时间划分,主要有以下几 ...

  3. 【异步编程学习笔记】JDK中的FutureTask和CompletableFuture详解(使用示例、源码)

    文章目录 FutureTask概述 使用实例 类图结构 FutureTask的run()方法 FutureTask的局限性 CompletableFuture概述 CompletableFuture代 ...

  4. 【学习笔记】OFDM中信道估计技术分析与实现

    目录 一.信道估计概念 二.信道估计作用 三.相干检测与非相干检测 (一)非相干检测 (二)相干检测 (三)注意 四.影响信道估计算法性能的重要因素 五.信道估计方法的划分 (一)根据处理域的不同, ...

  5. 20.Spring学习笔记_基于配置文件的方式来配置 AOP(by尚硅谷_佟刚)

    基于 XML 的配置声明切面 除了使用 AspectJ 注解声明切面, Spring 也支持在 Bean 配置文件中声明切面. 这种声明是通过 aop schema 中的 XML 元素完成的. 正常情 ...

  6. Spring学习笔记(三) AOP_annotation,AOP_XML

    在学习课程以前,听说AOP有种很神秘的感觉,好像很好深的技术.其实原理很简单,使用动态代理的方式给程序增加逻辑.与此相似的有struts2中的filter拦截器. 再讲AOP之前先把需求说一下: 同S ...

  7. java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间

    资源名称:Java JDK 8学习笔记 PDF 内容简介: ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念.操作.应用等问题及解决方案 ●针对Java SE 8新功能 ...

  8. Spring 学习笔记----->AOP

    Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...

  9. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

最新文章

  1. 当莎士比亚遇见Google Flax:教你用​字符级语言模型和归递神经网络写“莎士比亚”式句子...
  2. 不会英语计算机开车和,驾校学车的那些事儿——技术篇
  3. WAF果真是个好东西
  4. 利用WDS实现零接触部署Windows 7 VHD
  5. probable oracle net,ORA-28547: connection to server failed, probable Oracle Net admin error
  6. DCMTK:OFStandard类的测试程序
  7. 《spring-boot学习》-03-入门
  8. mba案例分析_2020年(第八届)MBA企业案例分析实践课程暨大赛完美收官!
  9. 苹果回应:iPhone 11用北斗导航作为位置数据系统一部分;马云回应年轻人去做快递小哥;Linux Lab发布v0.5 rc3| 极客头条
  10. 1. 3款免费好用的Markdown笔记应用,可以替代印象笔记
  11. nodejs真的是单线程吗?
  12. C4D插件X-Particles粒子特效(七)
  13. xp计算机怎么共享网络,xp系统手机usb共享网络上网,xp共享上网-
  14. 我的Python心路历程 第十期 (10.12 股票实战可视化之分位数)
  15. 《商业分析实践指南》(一)
  16. 打怪小游戏(快做完了)
  17. 如何搞定你喜欢的美术妹纸?
  18. Windows 安全资料库网站
  19. 1990-2020年江苏省全省人口数、户数(常住)
  20. kafka: dial tcp: lookup xxxx(domain): no such host

热门文章

  1. mybatis基于注解的入门案例
  2. 飞思卡尔智能车iar工程常见问题
  3. python 3读网页文件及保存成本地文件,遇到的编码问题
  4. 【跟网上的大多数不一样】rstudio plot不显示图片了
  5. 【解决方案】win10连接wifi输入密码之后用户就消失了
  6. Python剑指offer:矩形覆盖问题
  7. 矩阵二范数(norm)
  8. linux的内核是指的什么,[科普] Linux 的内核与 Linux 系统之间的关系
  9. qq邮箱格式的Java代码_Java实现QQ邮件发送
  10. mysql报错3534_win7下安装MYSQL报错:MYSQL 服务无法启动的3534问题