zoukankan      html  css  js  c++  java
  • ________________初学spring3

     pring 几个扩展点

    ___________________________BeanPostProcesser___________________________

    bean初始化时触发 

    在bean依赖装配(设置完成后)完成触发

    这里可以指定Bean做一些处理,比如返回该对象的代理对象

    @Component

    public class EchoBeanPostProcesser implements BeanPostProcessor {

    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

    System.out.println("≈≈≈≈≈≈≈≈≈>>>属性设置之后,init之前"+bean.getClass());

    if(bean instanceof User)

    return new LogUser();

    return bean;

    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {

    System.out.println("≈≈≈≈≈≈≈≈≈>>>属性设置之后,init之后"+bean.getClass());

    return bean;

    }

    }

    ___________________________BeanFactoryPostProcessor___________________________

    容器初始化时触发 

    @Component

    public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    System.out.println(beanFactory.getBeanDefinitionCount());

    }

    }

    BeanFactoryPostProcessor在Spring容容器初始化之后触发,且只能触发一次

    触发时机BeanPostProcessor早

    ___________________________BeanDefinitRegistryPostProcessor___________________________

    bean的静态注册

    @Component 

    public class MyBeanDefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor { 

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {

    // TODO Auto-generated method stub

    } 

    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {

    for(int i=0;i<10;i++) {

    BeanDefinitionBuilder bdb=BeanDefinitionBuilder.rootBeanDefinition(User.class);//bean的定义BeanDefinitionBuilder

    bdb.addPropertyValue("name", "admin"+i);

    registry.registerBeanDefinition("user"+i, bdb.getBeanDefinition());

    }

    }

    }

    可以拿到ConfigurableListableBeanFactory,BeanDefinitionRegistry 两个对象

    BeanDefinitionRegistry 对象可以动态注入Bean 

    public class App {

    public static void main(String[] args) {

    AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(AnnotationScan.class);

    context.getBeansOfType(User.class).values().forEach(System.out::println);

    context.close();

    }

    }

  • 相关阅读:
    localStorage保存账号密码
    作品第二课----简易年历
    作品第二课----滚动列表
    自己遇到的冒泡事件
    Oct 20th-绿叶学习网站总结
    Sep 30th-JavaScript的数组方法总结
    Sep 8th -css sprite
    前端知识体系【转】
    July 27th
    第一节 简单的jsp实例
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9336540.html
Copyright © 2011-2022 走看看