@Component public class CustomBean { public CustomBean(){ System.out.println("调用CustomBean空的构造方法"); } }
package com.wyq.spring.bean; import org.springframework.beans.BeansException; import org.springframework.beans.PropertyValues; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.SmartInitializingSingleton; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.beans.PropertyDescriptor; @Component @Scope("singleton") public class TestBean implements BeanPostProcessor, SmartInitializingSingleton, InstantiationAwareBeanPostProcessor, DisposableBean{ private static final String BEAN_NAME= "customBean"; @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (BEAN_NAME.equals(beanName)) { System.out.println("==>BeanPostProcessor.postProcessBeforeInitialization"); } return null; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (BEAN_NAME.equals(beanName)) { System.out.println("==>BeanPostProcessor.postProcessAfterInitialization"); } return null; } @Override public void afterSingletonsInstantiated() { System.out.println("==>SmartInitializingSingleton.afterSingletonsInstantiated"); } @Override public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException { if (BEAN_NAME.equals(beanName)) { System.out.println("==>InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation"); } return null; } @Override public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException { if (BEAN_NAME.equals(beanName)) { System.out.println("==>InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation"); } return false; } @Override public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException { System.out.println("==>InstantiationAwareBeanPostProcessor.postProcessPropertyValues"); return null; } @Override public void destroy() throws Exception { System.out.println("==>DisposableBean.destroy"); } }
END 十期推荐 【211期】面试官:说说为什么HTTPS是安全的 【212期】面试官:说说什么是单点登录?什么是SSO?什么是CAS? 【213期】如何保障消息中间件100%消息投递成功?如何保证消息幂等性? 【214期】面试官:聊聊常见的加密算法、原理、优缺点、用途 【215期】MySQL中事务和锁的重点和难点,一次性讲清楚! 【216期】JVM超神之路 【217期】面试官:你能说一下Redis的常见应用场景吗? 【218期】面试官:你能简单介绍一下 RabbitMQ 及它的使用场景吗 【219期】面试官:谈谈MySQL的limit用法、逻辑分页和物理分页 【220期】面试官:你能说说分布式锁,进程锁,线程锁吗? ? ~