Spring学习总结 + 【手写Spring底层机制核心】

打印 上一主题 下一主题

主题 910|帖子 910|积分 2730

Spring学习总结

Spring基本介绍

Spring 学习的核心内容


1.IOC: 控制反转, 可以管理java 对象
2.AOP : 切面编程
3.JDBCTemplate : 是spring 提供一套访问数据库的技能, 应用性强,相对好理解
4.声明式变乱: 基于ioc/aop 实现变乱管理
spring价值

Spring 最大的价值,通过配置,给程序提供需要使用的
web 层[Servlet(Action/Controller)]/Service/Dao/[JavaBean/entity]对象,
这个是核心价值所在,也是ioc 的具体体现, 实现解耦.
IOC容器

对比传统模式


  • 传统的开发模式[JdbcUtils / 反射]

​        1.程序员编写程序, 在程序中读取配置信息
​        2.创建对象, new Object???() // 反射方式
​        3.使用对象完成任务

  • IOC 的开发模式



    1、Spring 根据配置文件xml/注解, 创建对象, 并放入到容器(ConcurrentHashMap)中,
    并且可以完成对象之间的依赖
    2、当需要使用某个对象实例的时候, 就直接从容器中获取即可
    3、程序员可以更加关注如何使用对象完成相应的业务, (以前是new ... ==> 注解/配置
    方式)
Spring底层结构


DI 依赖注入


  • 可以理解成是IOC 的另外叫法.
Spring管理 IOC容器

基于XML配置Bean

通过范例获取Bean
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
  2. Monster monster = ioc.getBean(Monster.class);
复制代码

  • 按范例来获取bean, 要求ioc 容器中的同一个类的bean 只能有一个, 否则会抛出异常
    NoUniqueBeanDefinitionException
  • 应用场景:好比XxxAction/Servlet/Controller, 或XxxService 在一个线程中只需要一个对象实例(单例)的环境
  • 在容器配置文件(好比beans.xml)中给属性赋值, 底层是通过
    setter 方法完成的, 这也是为什么我们需要提供setter 方法的原因
通过构造器获取Bean

按索引index
  1. [/code]按范例type
  2. [code]
复制代码

  • 通过index 属性来区分是第几个参数

  • 通过type 属性来区分是什么范例(按照顺序)
通过p名称空间配置Bean
  1. [/code]bean 对象的相互引用
  2. [list=1]
  3. [*]别的寄义和前面一样
  4. [*]ref 表示memberDAO 这个属性将引用/指向id = memberDAOImpl 对象
  5. [/list][size=3]引用/注入别的bean 对象[/size]
  6. [code]
复制代码
引用/注入内部bean 对象
  1. [/code][size=3]引用/注入聚集/数组范例[/size]
  2. [list]
  3. [*]给聚集属性注入值
  4. [/list][code]
复制代码

  • 给bean 对象的map 聚集赋值
    1. <property name="monsterMap">
    2. <map>
    3. <entry>
    4. <key>
    5. <value>monsterKey01</value>
    6. </key>
    7. <ref bean="monster01"/>
    8. </entry>
    9. <entry>
    10. <key>
    11. <value>monsterKey02</value>
    12. </key>
    13. <ref bean="monster02"/>
    14. </entry>
    15. </map>
    16. </property>
    复制代码
  • 给bean 对象的properties 聚集赋值
    1. <property name="pros">
    2. <props>
    3. <prop key="k1">Java 工程师</prop>
    4. <prop key="k2">前端工程师</prop>
    5. <prop key="k3">大数据工程师</prop>
    6. </props>
    7. </property>
    复制代码
  • 给bean 对象的properties 聚集赋值
    1. <property name="pros">
    2. <props>
    3. <prop key="k1">Java 工程师</prop>
    4. <prop key="k2">前端工程师</prop>
    5. <prop key="k3">大数据工程师</prop>
    6. </props>
    7. </property>
    复制代码
  • 给bean 对象的数组属性注入值
    1. <property name="monsterName">
    2. <array>
    3. <value>银角大王</value>
    4. <value>金角大王</value>
    5. </array>
    6. </property>
    复制代码
  • 给bean 对象的set 属性注入值
    1. [/code][size=3][/size]
    2. [/list][size=3]bean 配置信息重用(继承)[/size]
    3. [code]
    复制代码
    抽象类
    1. [/code][size=3]bean 创建顺序[/size]
    2. [list]
    3. [*]在spring 的ioc 容器, 默认是按照配置的顺序创建bean 对象
    4. [*]如果如许配置,会先创建department01 对象,再创建student01 对象.
    5. [code]
    复制代码
bean 对象的单例和多例


  • 在spring 的ioc 容器, 在默认是按照单例创建的,即配置一个bean 对象后,ioc 容器只会创建一个bean 实例。
  • 如果,我们盼望ioc 容器配置的某个bean 对象,是以多个实例形式创建的则可以通过配置scope="prototype" 来指定

  • 默认是单例singleton, 在启动容器时, 默认就会创建, 并放入到singletonObjects 聚集
  • 当 设置为多实例机制后, 该bean 是在getBean()时才创建
  • 如果是单例singleton, 同时盼望在getBean 时才创建, 可以指定懒加载lazy-init="true" (注意默认是false)
  • 通常环境下, lazy-init 就使用默认值false , 在开发看来, 用空间换时间是值得的, 除非有特殊的要求.
  • 如果scope="prototype" 这时你的lazy-init 属性的值不管是ture, 还是false 都是在getBean 时候,才创建对象.
bean 的生命周期

阐明: bean 对象创建是由JVM 完成的,然后实行如下方法

  • 实行构造器
  • 实行set 干系方法
  • 调用bean 的初始化的方法(需要配置)
  • 使用bean
  • 当容器关闭时候,调用bean 的销毁方法(需要配置)
细节:

  • 初始化init 方法和destory 方法, 是程序员来指定
  • 销毁方法就是当关闭容器时,才会被调用.
配置bean 的后置处理器


  • 在spring 的ioc 容器,可以配置bean 的后置处理器
  • 该处理器/对象会在bean 初始化方法调用前和初始化方法调用后被调用
  • 程序员可以在后置处理器中编写本身的代码
1、怎么实行到这个方法?=> 使用AOP(反射+动态代理+IO+容器+注解)
2、有什么用?=> 可以对IOC 容器中所有的对象进行统一处理,好比日志处理/权限的校验/安全的验证/变乱管理.
3、针对容器的所有对象吗? 是的=>切面编程特点
通过属性文件给bean 注入值
  1. [/code][size=3]基于XML 的bean 的自动装配[/size]
  2. [code]
复制代码
特别阐明:

  • autowire = "byName" 会自动去找id 为setXxxx 背面Xxxx 的bean 自动组装.,如果找到就装配,如果找不到就报错,
  • 好比这里的
    就会去找OrderAction 类中界说的setOrderService 的id 为orderService 的OrderServicebean 组装,找到就组装,找不到就组装失败
基于注解配置Bean

基本介绍

基于注解的方式配置bean, 重要是项目开发中的组件,好比Controller、Service、和Dao.
组件注解的形式有


  • @Component 表示当前注解标识的是一个组件
  • @Controller 表示当前注解标识的是一个控制器,通常用于Servlet
  • @Service 表示当前注解标识的是一个处理业务逻辑的类,通常用于Service 类
  • @Repository 表示当前注解标识的是一个持久化层的类,通常用于Dao 类


  • !!!Spring 的IOC 容器不能检测一个使用了@Controller 注解的类到底是不是一个真正的控
    制器。注解的名称是用于程序员本身识别当前标识的是什么组件。别的的@Service
    @Repository 也是一样的原理[也就是说spring 的IOC 容器只要检查到注解就会天生对象,
    但是这个注解的寄义spring 不会识别,注解是给程序员编程方便看的]!!!
自动扫描包
  1. [/code][size=3]扫描时排除某些类 -expression[/size]
  2. [code]
复制代码


指定自动扫描哪些注解类
  1. [/code][size=3]修改beanName[/size]
  2. 标记注解后,类名首字母小写作为id 的值。也可以使用注解的value 属性
  3. 指定id 值,并且value 可以省略
  4. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404163459531-494347141.png[/img][/align]
  5. [size=5]AOP[/size]
  6. [size=4]动态代理[/size]
  7. [code]// 1.获取类加载对象
  8. ClassLoader loader = target_obj.getClass().getClassLoader();
  9. // 2.获取接口类型数组
  10. Class<?>[] interfaces = target_obj.getClass().getInterfaces();
  11. // 3.获取InvocationHandler 以匿名内部类的方式方式来获取InvocationHandler
  12. InvocationHandler h = new InvocationHandler() {
  13. // 4.以动态代理的方式调用目标对象的目标方法
  14. public Object invoke(Object proxy, Method method, Object[] args)
  15. throws Throwable {
  16. Object result = null;
  17. String methodName = method.getName();
  18. try {
  19. // 1. 在调用目标方法之前打印“方法开始”日志
  20. System.out.println("日志--方法名:" + methodName + "--方法开始--参数:"
  21. + Arrays.asList(args));
  22. // 2. 调用目标方法并接收返回值
  23. result = method.invoke(target_obj, args);
  24. // 3. 在目标方法结束后打印“方法结束”日志
  25. System.out.println("日志--方法名:" + methodName
  26. + "--方法正常结束--结果:result=" + result);
  27. } catch (Exception e) {
  28. // 4.如果目标方法抛出异常,打印“方法异常”日志
  29. e.printStackTrace();
  30. System.out.println("日志--方法名:" + methodName
  31. + "--方法抛出异常--异常类型:" + e.getClass().getName());
  32. } finally {
  33. // 5.在finally 中打印“方法最终结束”日志
  34. System.out.println("日志--方法名:" + methodName + "--方法最终结
  35. 束");
  36. }
  37. // 6. 返回目标方法的返回值
  38. return result;
  39. }
  40. };
  41. //生成SmartAnimaleable 的代理对象
  42. //需要三个参数,
  43. //1.就是loader(获取类加载对象)
  44. //2.接口数组
  45. //3.InvocationHandler 对象[这个相对麻烦..]
  46. SmartAnimalable proxy = (SmartAnimalable) Proxy.newProxyInstance(
  47. loader, interfaces, h);
  48. return proxy;
  49. }
  50. }
复制代码
AOP 的基本介绍

AOP 的全称(aspect oriented programming) ,面向切面编程




在切面类中声明关照方法


  • 前置关照:@Before
  • 返回关照:@AfterReturning
  • 异常关照:@AfterThrowing
  • 后置关照:@After
  • 环绕关照:@Around

细节

  • 关于切面类方法命名可以本身规范一下, 好比showBeginLog() . showSuccessEndLog()
    showExceptionLog() , showFinallyEndLog()
  • 切入表达式的更多配置,好比使用含糊配置
    @Before(value="execution(* com.code_study.aop.proxy.SmartDog.*(..))")
  • 表示所有访问权限,所有包的下所有有类的所方法,都会被实行该前置关照方法
    @Before(value="execution(* .(..))")
  • 当spring 容器开启了
    1. <aop:aspectj-autoproxy/>
    复制代码
    , 我们获取注入的对象, 需要以接口的范例来获取, 因为你注入的对象.getClass() 已经是代理范例了!
  • 当spring 容器开启了
    1. <aop:aspectj-autoproxy/>
    复制代码
    , 我们获取注入的对象, 也可以通过id 来获取, 但是也要转成接口范例.
开启基于注解的AOP 功能
  1. [/code][size=4]AOP-切入表达式[/size]
  2. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404163720600-1878548946.png[/img][/align]
  3. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404163726437-463395064.png[/img][/align]
  4. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404163731589-80908472.png[/img][/align]
  5. [list=1]
  6. [*]切入表达式也可以指向类的方法, 这时切入表达式会对该类/对象生效
  7. [*]切入表达式也可以指向接口的方法, 这时切入表达式会对实现了接口的类/对象生效
  8. [*]切入表达式也可以对没有实现接口的类,进行切入
  9. [/list][size=4]通过JoinPoint 可以获取到调用方法的签名[/size]
  10. [code]public void beforeMethod(JoinPoint joinPoint){
  11. joinPoint.getSignature().getName(); // 获取目标方法名
  12. joinPoint.getSignature().getDeclaringType().getSimpleName(); // 获取目标方法所属
  13. 类的简单类名
  14. joinPoint.getSignature().getDeclaringTypeName(); // 获取目标方法所属类的类名
  15. joinPoint.getSignature().getModifiers(); // 获取目标方法声明类型(public、private、
  16. protected)
  17. Object[] args = joinPoint.getArgs(); // 获取传入目标方法的参数,返回一个数组
  18. joinPoint.getTarget(); // 获取被代理的对象
  19. joinPoint.getThis(); // 获取代理对象自己
  20. }
复制代码
AOP-返回关照获取结果

添加属性 returning = "res"
  1. @AfterReturning(value = "execution(public float
  2. com.code_study.spring.aop.joinpoint.SmartDog.getSum(float, float))",
  3. returning = "res")
  4. public void showSuccessEndLog(JoinPoint joinPoint, Object res) {
  5. System.out.println("返回通知" + "--结果是--" + res );
  6. }
复制代码
AOP-异常关照中获取异常

添加属性 throwing = "throwable"
  1. @AfterThrowing(value = "execution(public float
  2. com.code_study.spring.aop.joinpoint.SmartDog.getSum(float, float))",
  3. throwing = "throwable")
  4. public void showExceptionLog(JoinPoint joinPoint, Throwable throwable) {
  5. System.out.println("异常通知-- 异常信息--" + throwable);
  6. }
复制代码
AOP-切入点表达式重用
  1. @Pointcut(value = "execution(public float
  2. com.code_study.spring.aop.joinpoint.SmartDog.getSum(float, float))")
  3. public void myPointCut() {
  4. }
复制代码
  1. @Before(value = "myPointCut()")
  2. public void showBeginLog(JoinPoint joinPoint) { //前置方法
复制代码
AOP-切面优先级标题

如果同一个方法,有多个切面在同一个切入点切入,那么实行的优先级如何控制.?
使用:注解@order(value=n) 来控制n 值越小,优先级越高.
AOP输出的信息顺序


  • 不能理解成:优先级高的每个消息关照都先实行,这个和方法调用机制(和Filter 过滤器链式调用雷同)

AOP-基于XML 配置AOP

在spring 中,我们也可以通过xml 的方式来配置AOP
  1. [/code][size=5]JdbcTemplate[/size]
  2. [size=4]JdbcTemplate-基本介绍[/size]
  3. [list=1]
  4. [*]通过Spring 可以配置数据源,从而完成对数据表的操作
  5. [*]JdbcTemplate 是Spring 提供的访问数据库的技能。可以将JDBC 的常用操作封装为模板方
  6. 法。[JdbcTemplate 类图].
  7. [/list][align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404163908523-851183261.png[/img][/align]
  8. [size=4]JdbcTemplate创建配置文件[/size]
  9. [size=3]引入外下属性文件[/size]
  10. [code]
复制代码
配置数据源
  1. [/code][size=3]配置JdbcTemplate[/size]
  2. [code]
复制代码
JdbcTemplate对数据库的CRUD操作

添加 execute&update
  1. ApplicationContext ioc = new
  2. ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  3. //得到JdbcTemplate bean
  4. JdbcTemplate bean = ioc.getBean(JdbcTemplate.class);
  5. // 1. 添加方式1
  6. // String sql = "INSERT INTO monster VALUES(400, '红孩儿', '枪法厉害')";
  7. // bean.execute(sql);
  8. //2. 添加方式2, 绑定参数
  9. String sql = "INSERT INTO monster VALUES(?, ?, ?)";
  10. int affected = bean.update(sql, 700, "红孩儿2", "枪法厉害2");
  11. System.out.println("add ok affected= " + affected);
复制代码
修改 update
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  2. //得到JdbcTemplate bean
  3. JdbcTemplate bean = ioc.getBean(JdbcTemplate.class);
  4. String sql = "UPDATE monster SET skill = ? WHERE id=?";
  5. int affected = bean.update(sql, "美女计", 300);
  6. System.out.println("affected= " + affected);
  7. System.out.println("update data ok~");
复制代码
批量添加 batchUpdate
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  2. //得到JdbcTemplate bean
  3. JdbcTemplate bean = ioc.getBean(JdbcTemplate.class);//添加..
  4. String sql = "INSERT INTO monster VALUES(?, ?, ?)";
  5. List<Object[]> param_list = new ArrayList<Object[]>();
  6. param_list.add(new Object[]{500, "白蛇精", "吃人"});
  7. param_list.add(new Object[]{600, "青蛇精", "吃小孩"});
  8. bean.batchUpdate(sql, param_list);
  9. System.out.println("batch add ok");
复制代码
查询并封装到Monster 实体对象
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  2. //得到JdbcTemplate bean
  3. JdbcTemplate bean = ioc.getBean(JdbcTemplate.class);
  4. String sql = "SELECT id as monsterId,name,skill FROM monster WHERE id =?";
  5. //下面这个rowmapper 是一个接口,可以将查询的结果,封装到你指定的Monster 对象中.
  6. RowMapper<Monster> rowMapper =
  7. new BeanPropertyRowMapper<Monster>(Monster.class);
  8. Monster monster = bean.queryForObject(sql, rowMapper, 100);
复制代码
查询并批量封装到Monster 实体对象
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  2. //得到JdbcTemplate bean
  3. JdbcTemplate bean = ioc.getBean(JdbcTemplate.class);
  4. String sql = "SELECT id as monsterId,name,skill FROM monster WHERE id >=?";
  5. //下面这个rowmapper 是一个接口,可以将查询的结果,封装到你指定的Monster 对象中.
  6. RowMapper<Monster> rowMapper = new
  7. BeanPropertyRowMapper<Monster>(Monster.class);
  8. List<Monster> monster_list =
  9. bean.query(sql, rowMapper, 200);
  10. for (Monster monster : monster_list) {
  11. System.out.println(monster);
  12. }
复制代码
查询单行单列
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  2. //得到JdbcTemplate bean
  3. JdbcTemplate bean = ioc.getBean(JdbcTemplate.class);
  4. String sql = "SELECT name FROM monster WHERE id =100";
  5. String name = bean.queryForObject(sql, String.class);
  6. System.out.println(name);
复制代码
使用Map 传入具名参数

1.配置NamedParameterJdbcTemplate,支持具名参数
  1. [/code]2.使用Map 传入具名参数完成操作
  2. [code]ApplicationContext ioc =
  3. new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  4. //得到NamedParameterJdbcTemplate bean
  5. NamedParameterJdbcTemplate namedParameterJdbcTemplate =
  6. ioc.getBean(NamedParameterJdbcTemplate.class);
  7. String sql = "INSERT INTO monster VALUES(:my_id, :name, :skill)";
  8. Map<String, Object> map_parameter = new HashMap<String, Object>();
  9. map_parameter.put("my_id", 800);
  10. map_parameter.put("name", "螃蟹精");
  11. map_parameter.put("skill", "钳子无敌大法");
  12. namedParameterJdbcTemplate.update(sql, map_parameter);
复制代码
使用sqlparametersoruce 来封装具名参数
  1. ApplicationContext ioc = new ClassPathXmlApplicationContext("JdbcTemplate_ioc.xml");
  2. //得到NamedParameterJdbcTemplate bean
  3. NamedParameterJdbcTemplate namedParameterJdbcTemplate =
  4. ioc.getBean(NamedParameterJdbcTemplate.class);
  5. String sql = "INSERT INTO monster VALUES(:monsterId, :name, :skill)";
  6. Monster monster = new Monster(900, "狐狸精", "狐媚之术");
  7. SqlParameterSource source = new BeanPropertySqlParameterSource(monster);
  8. namedParameterJdbcTemplate.update(sql, source);
  9. System.out.println("add ok~");
复制代码
声明式变乱


  • 使用Spring 的声明式变乱处理, 可以将一个变乱的多个子步骤(sql语句)分别写成一个方法,然后统一管理.
  • 这个是Spring 很牛的地方,在开发使用的很多,优点是无代码冗余,服从高,扩展方便
  • 底层使用AOP (动态代理+动态绑定+反射+注解)
配置声明式变乱

引入外下属性文件
  1. [/code][size=3]配置数据源[/size]
  2. [code]
复制代码
配置JdbcTemplate
  1. [/code][size=3]配置变乱管理器[/size]
  2. [code]
复制代码
开启基于注解的声明式变乱功能
  1. [/code][size=4]变乱的传播机制[/size]
  2. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404163955570-53511680.png[/img][/align]
  3. [size=3]变乱传播机制种类[/size]
  4. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404164020723-1406177502.png[/img][/align]
  5. [size=3]变乱传播的属性/种类机制分析,重点 REQUIRED 和REQUIRED_NEW 两种变乱[/size]
  6. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404164109070-1778504398.png[/img][/align]
  7. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404164115600-48879936.png[/img][/align]
  8. [size=3]变乱的传播机制的设置方法[/size]
  9. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404164127214-1629917672.png[/img][/align]
  10. [size=3]REQUIRES_NEW 和REQUIRED 在处理变乱的策略[/size]
  11. [list=1]
  12. [*]如果设置为REQUIRES_NEW
  13. 方法2 如果错误,不会影响到Tx1反之亦然,即它们的变乱是独立的.
  14. [*]如果设置为REQUIRED 方法2和Tx1是一个整体,只要有方法的变乱错误,那么两个方法都不会实行成功.!
  15. [/list][size=4]变乱的隔离级别[/size]
  16. [align=center][img]https://img2024.cnblogs.com/blog/3419314/202404/3419314-20240404164147082-982032643.png[/img][/align]
  17. [list=1]
  18. [*]默认的隔离级别, 就是mysql 数据库默认的隔离级别一般为REPEATABLE_READ
  19. [*]看源码可知Isolation.DEFAULT 是:Use the default isolation level of the underlying
  20. datastore
  21. [*]查看数据库默认的隔离级别SELECT @@global.tx_isolation
  22. [/list][size=4]变乱的超时回滚[/size]
  23. [list=1]
  24. [*]如果一个变乱实行的时间超过某个时间限定,就让该变乱回滚。
  25. [*]可以通过设置变乱超时回顾来实现
  26. [*]使用注解 @Transactional(timeout = 2)
  27. [/list]​        超时时间,设置为2 秒)
  28. [size=5]手写Spring底层机制[/size]
  29. [size=4]IOC容器[/size]
  30. [code] <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //界说 BeanDefinitionMap 存放 beanDefinition <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> private ConcurrentHashMap beanDefinitionMap = <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> new ConcurrentHashMap(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //界说 singletonObjects 存放 单例 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> private ConcurrentHashMap singletonObjects = <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> new ConcurrentHashMap(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //界说beanPostProcessorList 存放 BeanPostProcessor <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> private ArrayList beanPostProcessorList= <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> new ArrayList();
复制代码
构造器
  1. //构造器public ZyApplicationContext(Class configClass) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> this.configClass = configClass; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> beanDefinitionsByScan(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //初始化单例池 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> initSingletonObjects();}
复制代码
扫描包
  1. private void beanDefinitionsByScan() { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获得扫描的包 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> ComponentScan componentScan = <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> (ComponentScan)this.configClass.getDeclaredAnnotation(ComponentScan.class); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获取路径 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String path = componentScan.value(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> path = path.replace(".","/"); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获取工作路径 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> ClassLoader classLoader = ZyApplicationContext.class.getClassLoader(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> URL resource = classLoader.getResource(path); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> File file = new File(resource.getFile()); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (file.isDirectory()){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> File[] files = file.listFiles(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (File f : files) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获取绝对路径 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String fileAbsolutePath = f.getAbsolutePath(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (fileAbsolutePath.endsWith(".class")) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获取className <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String className = fileAbsolutePath.substring(fileAbsolutePath.lastIndexOf("\") + 1, fileAbsolutePath.indexOf(".class")); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String fullPath = path.replace("/", ".") + "." + className; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> try { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Class clazz = classLoader.loadClass(fullPath); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (clazz.isAnnotationPresent(Component.class)) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //初始化beanPostProcessorList <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (BeanPostProcessor.class.isAssignableFrom(clazz)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> BeanPostProcessor beanPostProcessor = <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> (BeanPostProcessor)clazz.newInstance(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> beanPostProcessorList.add(beanPostProcessor); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> continue; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //处理className <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String value = clazz.getDeclaredAnnotation(Component.class).value(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if ("".equals(value)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> className = StringUtils.uncapitalize(className); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }else { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> className = value; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> System.out.println("是一个bean 类名= " + className); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //设置 beanDefinition <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> BeanDefinition beanDefinition = new BeanDefinition(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //设置scope <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (clazz.isAnnotationPresent(Scope.class)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> beanDefinition.setScope(clazz.getDeclaredAnnotation(Scope.class).value()); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }else{ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> beanDefinition.setScope("singleton"); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> beanDefinition.setClazz(clazz); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //放入 beanDefinitionMap <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> beanDefinitionMap.put(className,beanDefinition); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } else { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> System.out.println("不是一个bean 类名= " + className); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (Exception e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
初始化单例池
  1. private void initSingletonObjects() { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Enumeration keys = beanDefinitionMap.keys(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> while (keys.hasMoreElements()){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String beanName = keys.nextElement(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> BeanDefinition beanDefinition = beanDefinitionMap.get(beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String scope = beanDefinition.getScope(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if ("singleton".equals(scope)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object bean = createBean(beanDefinition,beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> singletonObjects.put(beanName,bean); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
getBean()
  1. public Object getBean(String name){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (beanDefinitionMap.containsKey(name)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> BeanDefinition beanDefinition = beanDefinitionMap.get(name); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String scope = beanDefinition.getScope(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if ("singleton".equals(scope)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return singletonObjects.get(name); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }else{ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return createBean(beanDefinition,name); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return null; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
createBean()
  1. private Object createBean(BeanDefinition beanDefinition,String beanName){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> try { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Class clazz = beanDefinition.getClazz(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object instance = clazz.getDeclaredConstructor().newInstance(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return instance; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (InstantiationException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (IllegalAccessException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (InvocationTargetException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (NoSuchMethodException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
依赖注入


  • 加入到createBean()中
  1. <aop:aspectj-autoproxy/> private Object createBean(BeanDefinition beanDefinition,String beanName){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> try { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Class clazz = beanDefinition.getClazz(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object instance = clazz.getDeclaredConstructor().newInstance(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //依赖注入 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Field[] declaredFields = clazz.getDeclaredFields(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (Field declaredField : declaredFields) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (declaredField.isAnnotationPresent(Autowired.class)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (declaredField.getDeclaredAnnotation(Autowired.class).required()){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获的字段名 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String fieldName = declaredField.getName(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获取实例 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object bean = getBean(fieldName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> declaredField.setAccessible(true); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> declaredField.set(instance,bean); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return instance; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (InstantiationException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (IllegalAccessException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (InvocationTargetException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (NoSuchMethodException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
后置处理器


  • 加入到createBean()中
  1. <aop:aspectj-autoproxy/> private Object createBean(BeanDefinition beanDefinition,String beanName){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> try { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Class clazz = beanDefinition.getClazz(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object instance = clazz.getDeclaredConstructor().newInstance(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //依赖注入 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Field[] declaredFields = clazz.getDeclaredFields(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (Field declaredField : declaredFields) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (declaredField.isAnnotationPresent(Autowired.class)){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (declaredField.getDeclaredAnnotation(Autowired.class).required()){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获的字段名 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> String fieldName = declaredField.getName(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //获取实例 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object bean = getBean(fieldName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> declaredField.setAccessible(true); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> declaredField.set(instance,bean); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //后置处理器 before() <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //遍历 beanPostProcessorList <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (BeanPostProcessor beanPostProcessor : beanPostProcessorList) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object current = beanPostProcessor. <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> postProcessBeforeInitialization(instance, beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (current!=null){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> instance = current; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //初始化bean <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (instance instanceof InitializingBean){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> try { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> ((InitializingBean)instance).afterPropertiesSet(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (Exception e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //后置处理器 after() <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //遍历 beanPostProcessorList <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (BeanPostProcessor beanPostProcessor : beanPostProcessorList) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object current = beanPostProcessor. <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> postProcessAfterInitialization(instance, beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (current!=null){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> instance = current; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> System.out.println(""); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> System.out.println("-------------------------------------"); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> System.out.println(""); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return instance; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (InstantiationException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (IllegalAccessException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (InvocationTargetException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (NoSuchMethodException e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
AOP


  • AOP需要在后置处理器的before方法中实现
  1. @Override <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> public Object postProcessAfterInitialization(Object bean, String beanName) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> System.out.println("ZyBeanPostProcessor后置处理器-After-beanName= "+beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //aop实现 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if("smartDog".equals(beanName)) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object proxyInstance = Proxy.newProxyInstance(ZyBeanPostProcessor.class.getClassLoader(), bean.getClass().getInterfaces(), new InvocationHandler() { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> @Override <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object result = null; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if ("getSum".equals(method.getName())) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> SmartAnimalAspect.showBeginLog(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> result = method.invoke(bean, args); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> SmartAnimalAspect.showBeginLog(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }else { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> result = method.invoke(bean, args);//实行目的方法 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return result; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return proxyInstance; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return bean; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
几个Spring的标题

1.单例/多例怎么实现的?@scope为什么可以实现?
答复:@scope 的value属性可以设置为singleton /prototype
通过getBean()方法 如果bean中的属性scope为singleton 就从单例池直接拿,如果是prototype 就调用createBean()创建一个实例
2.如何实现依赖注入?@Autowired Spring容器如何实现依赖注入?
答复: 遍历clazz的所有属性 通过@Autowired注解 如果有 先获取字段名 再通过getBean()获取对应的bean 最后用filed.set()方法将实例的该属性设置为 获取到的bean 实现依赖注入
3.后置处理器 为什么在创建bean 时 调用bean 的 init方法初始化前/后 调用?
  1. //后置处理器 before() <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //遍历 beanPostProcessorList <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (BeanPostProcessor beanPostProcessor : beanPostProcessorList) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object current = beanPostProcessor. <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> postProcessBeforeInitialization(instance, beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (current!=null){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> instance = current; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //初始化bean <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (instance instanceof InitializingBean){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> try { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> ((InitializingBean)instance).afterPropertiesSet(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } catch (Exception e) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> throw new RuntimeException(e); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //后置处理器 after() <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> //遍历 beanPostProcessorList <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> for (BeanPostProcessor beanPostProcessor : beanPostProcessorList) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object current = beanPostProcessor. <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> postProcessAfterInitialization(instance, beanName); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if (current!=null){ <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> instance = current; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }
复制代码
4.后置处理器和AOP有什么关系,Spring Aop如何实现??
答复:aop的实现着实后置处理器的before中实现的,底层使用动态代理
  1. //aop实现 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if("smartDog".equals(beanName)) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object proxyInstance = Proxy.newProxyInstance(ZyBeanPostProcessor.class.getClassLoader(), bean.getClass().getInterfaces(), new InvocationHandler() { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> @Override <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> Object result = null; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> if ("getSum".equals(method.getName())) { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> SmartAnimalAspect.showBeginLog(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> result = method.invoke(bean, args); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> SmartAnimalAspect.showBeginLog(); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }else { <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> result = method.invoke(bean, args);//实行目的方法 <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return result; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> }); <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return proxyInstance; <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> } <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy/> return bean;
复制代码
本文学习内容来自韩顺平老师的课程
仅供个人参考学习

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表