`
dr.han
  • 浏览: 46297 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Bean 的后处理

阅读更多
Bean的后处理

Spring提供了2次机会让你切入到Bean的生命周期中去检查并修改它的配制,这叫做后处理

后处理的类须继承:public interface BeanPostProcessor{
     Object postProcessBeforeInitializtion(Object bean,String name)  throws BeansExcepton;
//在Bean的初始化方法之前调用
     Object postProcessAfterInitializtion(Object bean, String name)  throws BeansExcepton;  
//在Bean的初始化方法之后调用
}

自定义后处理类:
1.我们编写一个类CustomPostProcessor实现BeanPostProcessor接口
2.注册后处理类:
     (1)BeanPostProcessor bpp = new CustomPostProcessor();
        factory.addBeanPostProcessor(bpp);
    (2) <bean id="customPostProcessor" class="*.CustomPostProcessor"
结果:
  注册完后处理类后,其他的所有的bean,都会在初始化的前后调用相应的方法

Bean Factory的后处理

BeanFactoryPostProcessor在beanfactory载入所有的bean的定义后实例化bean之前,对beanfactory的后处理,如计算bean的个数等等

后处理的类必须继承:
public interface BeanFactoryPostProcessor{
   public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)throws BeansException;
}
自定义beanfactory后处理类
1.编写一个类B实现接口
2.注册声明bean
  (1) bean工厂中无法使用
  (2) 上下文容器中配制为普通bean即可

Spring自身的后处理类

PropertyPlaceholderConfigurer 分散配制类

<bean id="propertyConfigurer" class="org.springframework.beans.
                factory.config.PropertyPlaceholderConfigurer">
<property name="location">
           <list>
              <value>web-inf/****.properties</value>
           </list>
         </property>
</bean>

java.beans.PropertyEditorSupport 定制属性编辑器类

该类中有2个方法 getAsText();setAsText(String value);

它可以将一个字符串拆分并组装成一个对象,并将此对象注入到其他使用该对象的bean中。

自定义属性编辑器

编写类 C 实现java.beans.PropertyEditorSupport 类
配制:
<bean id="customEditorConf" class="org.spring.framework.beans.facotry.
      config.CustomEditorConfigurer">
      <property name="customEditors">
         <map>
            <entry key="*......C"
                <bean id="c" class="*......C"/>
            </entry>
         </map>
      </property>
</bean>

注入到其他类中:

<bean id="target" class="..................."
   <property name="x">//x 为一个java对象,此时运行C的方法把value转换成x对象
      <value>1234_1313_2424</value>
   </property>
</bean>
分享到:
评论

相关推荐

    Spring Bean重复执行两次(实例被构造两次)问题分析

    如果一个BeanA依赖于另一个BeanB,同时BeanB也依赖于BeanA,那么Spring在处理依赖关系时可能会陷入循环引用,导致两个Bean都实例化两次。 3. **@PostConstruct与初始化回调**:Spring允许我们在Bean初始化后执行...

    Spring Bean 加载顺序 .

    Spring允许自定义BeanPostProcessor,它们在Bean实例化后执行特定的处理,比如AOP代理。这些后处理器将在Bean实例化后,初始化前介入。 7. **Bean初始化**: 实例化完成后,Spring会执行Bean的初始化方法,包括...

    spring bean的生命周期测试代码

    在Bean初始化之后,Spring容器可能会调用自己的回调方法,如`BeanPostProcessor`接口实现的`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`方法,允许自定义逻辑进一步处理Bean。...

    Spring实例化Bean顺序

    5. **InitializingBean接口**:如果Bean实现了`InitializingBean`接口,Spring会在所有必需的属性设置后调用`afterPropertiesSet()`方法。这个接口的方法调用时机晚于`@PostConstruct`注解的方法,因此实例化顺序会...

    spring的bean加载顺序样例项目

    - 如果有多个配置源,如多个`beans.xml`文件或混合Java配置,Spring会合并所有的Bean定义,然后按照合并后的顺序进行处理。 在"sample"这个压缩包项目中,我们可以创建多个Bean,通过观察它们的初始化顺序来验证...

    jdk代理,cgib代理和spring后处理bean的关系

    本文将围绕“JDK代理”、“CGI代理”以及它们与Spring后处理Bean的关系进行深入探讨。 首先,JDK代理,也称为接口代理,是Java内置的一种动态代理机制。通过实现`java.lang.reflect.InvocationHandler`接口并调用`...

    Spring Bean生命周期&BeanDefinitions1

    Spring通过其IoC(Inversion of Control,控制反转)容器管理Bean的生命周期,提供了多种方式来定制Bean的行为。本篇文章将深入探讨Spring Bean的生命周期及其BeanDefinitions。 首先,Spring Bean的生命周期分为几...

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    Java中Spring获取bean方法小结

    这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...

    Spring Bean Lifecycle Control

    3. **容器回调**:在Bean完全初始化并准备好使用后,开发者可以通过实现`BeanPostProcessor`接口,提供自定义的回调处理。例如,`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`方法。 4...

    Spring Bean 的生命周期.docx

    1. BeanNameAware:当Bean实例化并设置了属性后,Spring会调用`setBeanName`方法,将Bean的名称传入,允许Bean知道自己的名字。 2. BeanFactoryAware:在`setBeanName`之后,Spring会调用`setBeanFactory`方法,将...

    spring IOC反射装载bean

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理交给了容器来处理。在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和...

    Spring Bean 生命周期之“我从哪里来?”.docx

    此外,Spring还提供了`BeanPostProcessor`接口,它允许自定义在Bean初始化前后进行的额外处理。该接口包含两个方法:`postProcessBeforeInitialization()`和`postProcessAfterInitialization()`,这两个方法会在Bean...

    spring自动扫描和管理Bean的示例

    - **@PostConstruct** 和 **@PreDestroy**:标记初始化和销毁方法,Spring会在Bean创建后和销毁前调用这些方法。 在`spring_autozp_demo`压缩包中,可能包含了一个Spring应用的示例代码,演示了如何使用上述注解和...

    Spring中Bean的生命周期 applicationcontext的应用(实现国际化,事件的传递)

    3. **初始化回调**:在属性注入完成后,Spring会调用Bean的初始化方法。如果在Bean定义中配置了`init-method`,那么这个方法会被执行。此外,实现`InitializingBean`接口的Bean也会自动调用`afterPropertiesSet()`...

    Spring在应用中获得Bean的方法

    此外,`@Autowired`注解的工作原理涉及`AutowiredAnnotationBeanPostProcessor`类,它是一个Bean后处理器,会在Bean实例化后进行处理,找到匹配的依赖并注入。 在开发中,Spring提供的各种工具如`BeanPostProcessor...

    SpringBoot 获取spring bean方式.rar

    通过实现`BeanPostProcessor`接口,可以在Bean实例化后进行额外的处理,如AOP(面向切面编程)实现。 9. **`@ConfigurationProperties`绑定配置属性** Spring Boot允许我们将配置文件的属性值绑定到特定的Bean,...

    Spring学习笔记(9)----让Spring自动扫描和管理Bean

    2. **`@Autowired`注入**:当Bean被自动扫描后,Spring可以使用`@Autowired`注解自动装配依赖。这个注解告诉Spring,应该找到类型匹配的Bean来注入当前Bean的属性、构造器参数或方法。 3. **`@Configuration`与`@...

    Spring Bean的生命周期详细介绍

    5. 容器级处理:工厂后处理器在Bean实例化后和初始化之前进行处理,例如ConfigurationClassPostProcessor负责处理@Configuration类。 6. 正常服务:Bean现在准备就绪,可以被其他Bean使用,或者由应用程序代码直接...

    Spring的bean生命周期

    2. **运行**:容器启动后,它可以管理Bean的生命周期,处理Bean之间的依赖关系,响应来自应用程序的请求来获取Bean。 3. **关闭**:当应用程序关闭或者需要释放资源时,通过调用ApplicationContext的close()方法...

Global site tag (gtag.js) - Google Analytics