@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期】面试官:你能说说分布式锁,进程锁,线程锁吗? ? ~