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();

    }

    }

  • 相关阅读:
    欧拉回路 定理
    UESTC 1087 【二分查找】
    POJ 3159 【朴素的差分约束】
    ZOJ 1232 【灵活运用FLOYD】 【图DP】
    POJ 3013 【需要一点点思维...】【乘法分配率】
    POJ 2502 【思维是朴素的最短路 卡输入和建图】
    POJ 2240 【这题貌似可以直接FLOYD 屌丝用SPFA通过枚举找正权值环 顺便学了下map】
    POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】
    POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】
    js 实现slider封装
  • 原文地址:https://www.cnblogs.com/qiqisx/p/9336540.html
Copyright © 2011-2022 走看看