首页 > 编程语言 > 详细

spring-6-源码解析AOP

时间:2019-07-10 12:02:26      阅读:113      评论:0      收藏:0      [点我收藏+]

原理图

https://www.processon.com/apps/5d1c16dde4b076f4fd3f5c40

技术分享图片

 

技术分享图片

 

技术分享图片

 

package com.beanPostProcessor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.core.PriorityOrdered;
import org.springframework.stereotype.Component;

@Component
public class Lwj_BeanPostPocessor implements BeanPostProcessor, PriorityOrdered {
    //实现PriorityOrdered,实现getOrder方法返回一个数值越小越靠前执行
    @Override
    public int getOrder() {
        return 102;
    }

    //初始化之前植入的切面方法
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if("wjwTest".equals(beanName)){
            System.out.println("Lwj_BeanPostPocessor之前的方法");
        }
        return bean;
    }

    //初始化之后植入的切面方法
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if("wjwTest".equals(beanName)){
            System.out.println("Lwj_BeanPostPocessor之后的方法");
        }
        return bean;
    }
}

  技术分享图片

 

 此方式是spring提供的扩展点之一,spring中一共存在五种扩展方式。

 

再应用中单例(singleton)调用原型(prototype)可以使用两种方式

Lookup方式 需要注意的是@Lookup只能注解在方法上,这个时候可以注解在一个抽象方法上。

实现ApplicationContextAware接口实现set方法,此方式是重新创建一个beanFactory然后从工厂中再获取一个bean此时这个newBean与原工厂中的oldBean类型一致但在LVM的堆中不属于同一个

 

spring-6-源码解析AOP

原文:https://www.cnblogs.com/gnwzj/p/11163023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!