• Spring-Spring Bean后置处理器


    Spring Bean后置处理器

    BeanPostProcessor接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等。你也可以在Spring容器通过插入一个或多个BeanPostProcessor的实现来完成实例化,配置和初始化一个bean之后实现一些自定义逻辑回调方法。

    你可以配置多个BeanPostProcessor接口,通过设置BeanPostProcessor实现的Ordered接口提供的order属性来控制这些BeanPostProcessor接口的执行顺序。

    BeanPostProcessor可以对bean(或对象)实例进行操作,这意味着Spring IoC容器实例化一个bean实例,然后BeanPostProcessor接口进行它们的工作。

    ApplicationContext会自动检测由BeanPostProcessor接口定义实现的bean,注册这些bean为后置处理器,然后通过在容器中创建bean,在适当的时候调用它。

    下面是HelloWorld.java的内容:

    package com.tutorialspoint;
    
    public class HelloWorld {
        private String message;
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
        
        public void init() {
            System.out.println("Bean is going through init.");
        }
        
        public void destroy() {
            System.out.println("Bean will destroy now.");
        }
    }

    这是实现BeanPostProcessor的非常简单地例子,它在任何bean的初始化的之前和之后输入该bean的名称。你可以在初始化bean的之前和之后实现更复杂的逻辑,因为你又两个访问内置bean对象的后置处理程序方法。

    这里是InitHelloWorld.java的内容:

    package com.tutorialspoint;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    
    public class InitHellWorld implements BeanPostProcessor {
        public Object postProcessBeforeInitialization(Object bean,String beanName) throws BeansException{
            System.out.println("Before Initialization..." + beanName);
            return bean;
        }
        
        public Object postProcessAfterInitialization(Object bean , String beanName) throws BeansException {
            System.out.println("After Initialization..." + beanName);
            return bean;
        }
    }

    下面是bean.xml的内容:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
        <bean id="helloWorld1" class="com.tutorialspoint.HelloWorld" scope="prototype"  init-method="init" destroy-method="destroy">
        <property name="message" value="hello fpc!"></property>
        </bean>
        <bean class="com.tutorialspoint.InitHellWorld"></bean>
    </beans>

    一旦你创建源代码和bean配置文件完成后,就可以运行该程序,如果你的应用程序一切都正常,将输出以下信息:

  • 相关阅读:
    【leetcode】1030. Matrix Cells in Distance Order
    【leetcode】1031. Maximum Sum of Two Non-Overlapping Subarrays
    【leetcode】1032. Stream of Characters
    L120 单词造句
    L119
    L118
    2018.8.6邮件规范一
    L117
    L116
    L115
  • 原文地址:https://www.cnblogs.com/fangpengchengbupter/p/7797857.html
Copyright © 2020-2023  润新知