编写的插件需要满足第一个要求,请给出测试代码的截图和运行效果截图。
3条回答 默认 最新
- LouD_dm 2022-07-18 17:31关注
1.代码示例
@Component public class TestBean implements SmartInitializingSingleton { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void afterSingletonsInstantiated() { System.out.println(this); System.out.println("单例Bean实预例化完成之后调用接口"); this.setName("单例Bean实预例化完成之后调用接口"); } @Override public String toString() { return "TestBean{" + "name='" + name + '\'' + '}'; } } @Component public class TestBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // 在任何 bean 初始化回调 //(如 InitializingBean 的 afterPropertiesSet 或自定义 init 方法)之前将此 BeanPostProcessor 应用于给定的新 bean 实例。 // bean 将已填充属性值。返回的 bean 实例可能是原始的包装器 if(bean instanceof TestBean){ System.out.println("bean初始化前回调:" + bean); TestBean bean1 = (TestBean) bean; bean1.setName("bean初始化前回调"); return BeanPostProcessor.super.postProcessBeforeInitialization(bean1, beanName); } return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName); } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { // 在任何 bean 初始化回调(如 InitializingBean 的 afterPropertiesSet 或自定义 init 方法)之后, // 将此 BeanPostProcessor 应用于给定的新 bean 实例。 bean 将已填充属性值 if(bean instanceof TestBean){ System.out.println("bean初始化后回调:" + bean); TestBean bean1 = (TestBean) bean; bean1.setName("bean初始化后回调"); return BeanPostProcessor.super.postProcessBeforeInitialization(bean1, beanName); } return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName); } } @SpringBootTest class SpringbootTestApplicationTests { @Autowired private TestBean testBean; @Test void testBeanPostProcessorAndSmartInitializingSingleton() { System.out.println(testBean); } }
2.BeanPostProcessor有两个方法,一个在Bean初始化前回调,一个初始化后回调,但都在SmartInitializingSingleton之前执行
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 微信小程序协议怎么写
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看