Spring Boot【原理分析】(4)——ConfigurationClassEnhancer

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

一、简介

Configuration class会在ConfigurationClassPostProcessor中将Configuration class进行强化处理。Spring通过CGLIB进行动态代理。核心类ConfigurationClassEnhancer。

二、源码

    private Enhancer newEnhancer(Class<?> superclass, ClassLoader classLoader) {
        Enhancer enhancer = new Enhancer();
        // 设置父类Configuration
        enhancer.setSuperclass(superclass);
        // 用于设置beanFactory
        enhancer.setInterfaces(new Class<?>[] {EnhancedConfiguration.class});
        enhancer.setUseFactory(false);
        // 用于命名BySpringCGLIB
        enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE);
        // 定义beanFactory属性名,暴露ClassLoader
        enhancer.setStrategy(new BeanFactoryAwareGeneratorStrategy(classLoader));
        // 设置代理回调:
        // BeanMethodInterceptor,**核心@Bean方法调用**。
        // BeanFactoryAwareMethodInterceptor,提供setBeanFactory(BeanFactory)调用
        enhancer.setCallbackFilter(CALLBACK_FILTER);
        enhancer.setCallbackTypes(CALLBACK_FILTER.getCallbackTypes());
        return enhancer;
    }

ConfigurationClassEnhancer主要对Scope和AOP进行处理。


来源:[]()

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » Spring Boot【原理分析】(4)——ConfigurationClassEnhancer

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏