今天在写Spring的引介代理的时候,报了一个错: Exception in thread "main" org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'inter1' is expected to be of type 'com.dengchengchao.springtest.intertest.Inter1Impl' but was actually of type 'co…
突然想到AOP,就简单回忆一下动态代理.1.什么是动态代理? 假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行. 一旦我想在用户操作之前加一个权限验证方法,那每个调用方法之前得再加一个权限验证方法,这样的工作量则是巨大的. 解决方案:将对象增删改查方法交给代理去执行,代理在执行方法前后可以做日志和权限控制. 代理:本来应该由自己做的事情,由别人去做 动态代理:在程序运行过程中生成代理对象,由该代理对象去完成自己要去做的事情. 应用: 1.…
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其…
数组添加值 public class DiTest { /** * 数组 */ private String [] arrays; /** * List:集合 */ private List<Integer> lists; /** * Set: 无序集合 */ private Set<String> sets; /** * Map */ private Map<String,Object> maps; /** * 配置 */ private Properties pro…
前言 在研究 『 Spring 是如何解决循环依赖的 』 的时候,了解到 Spring 是借助三级缓存来解决循环依赖的. 同样在上一节留下了疑问: 循环依赖为什么要使用三级缓存?而不是使用二级缓存? AOP 动态代理对循环依赖的有没有什么影响? 本篇文章也是围绕上面的内容进行展开. 笔记也在不断整理,之前可能会有点杂乱. 循序渐进,看一看什么是循环依赖? 开始先简单回顾一下 Bean 的创建过程,当然小伙伴也可以直接阅读『 单例 Bean 的创建 』这篇文章. 不过考虑到阅读本文前再阅读上一篇文…
前言 在上一篇文章中讲到了Spring是如何获取对应的Bean的增强,然后本次主要讲解一下Spring如何在获取到增强后创建Spring代理的. 在步入正题之前先给大家看一下Spring创建代理的大致流程图 接下来我们就回到AbstractAutoProxyCreator.class类中的wrapIfNecessary方法. 看源码(AbstractAutoProxyCreator.class) protected Object wrapIfNecessary(Object bean, Stri…
接下来我们来体会下动态代理带给我们的便利 package aop006; public interface Girl { public void KFC(String datetime); public void meet(String datetime); } package aop006; /* * */ public class Girl1 implements Girl{ public void KFC(String datetime){ System.out.println("[核心业…
AOP:面向切面.面向方面.面向接口是一种横切技术横切技术运用:1.事务管理: (1)数据库事务:(2)编程事务(3)声明事物:Spring AOP-->声明事物   2.日志处理:3.安全验证: Spring AOP---OOP升级 静态代理原理:目标对象:调用业务逻辑    代理对象:日志管理表示层调用--->代理对象(日志管理)-->调用目标对象 动态代理原理:spring AOP采用动态代理来实现(1)实现InvocationHandler接口 (2)创建代理类(通过java A…
一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 以简单模拟事务的执行过程说明各种代理区别 1.1 静态代理 由程序员创建或由特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. public interface PersonDao { void sa…
一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 以简单模拟事务的执行过程说明各种代理区别 1.1 静态代理 由程序员创建或由特定工具自动生成源代码,再对其编译.在程序运行前,代理类的.class文件就已经存在了. ? 1 2 3 4 public interface PersonDao…