当前位置: 首页 > news >正文

Bean后处理器

          常见的Bean后处理器有两种,它主要用来对Bean的注入进行一些拓展解析,比如@Autoweired注解或者@Resource注解。

  1.准备Bean

package com.example.demo2.b02;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/2 23:06*/
public class Bean1 {private static final Logger log = LoggerFactory.getLogger(Bean1.class);private Bean2 bean2;@Autowiredpublic void setBean2(Bean2 bean2){log.info("Autowired生效 :{}",bean2);this.bean2 = bean2;}private Bean3 bean3;@Resourcepublic void setBean3(Bean3 bean3){log.info("@Resource生效 :{}",bean3);this.bean3 = bean3;}private String home;@Autowiredpublic void setHome(@Value("${JAVA_HOME}") String home){log.info("@Value生效: {}",home);}@PostConstructpublic void init(){log.info("@PostConstruct 生效");}@PreDestroypublic void destroy(){log.info("@PreDestroy 生效");}}
package com.example.demo2.b02;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/2 23:08*/
public class Bean2 {
}
package com.example.demo2.b02;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/2 23:08*/
public class Bean3 {
}

2.运行主类

package com.example.demo2.b02;import org.springframework.context.support.GenericApplicationContext;/*** @author zhou* @version 1.0* @description TODO* @date 2025/10/2 23:03*/
public class TestBeanPostProcessor {public static void main(String[] args) {//创建一个干净的容器GenericApplicationContext context = new GenericApplicationContext();//用原始方法注册beancontext.registerBean("bean1",Bean1.class);context.registerBean("bean2",Bean2.class);context.registerBean("bean3",Bean3.class);//初始化容器context.refresh();//销毁容器context.close();}}

注册我们提供的3个Bean,并且初始化并销毁容器。

结果:

        可以发现我们在Bean1中依赖注入的一些类并没有生效。

3.AutowiredAnnotationBeanPostProcessor后处理器

   首先需注入下面后处理器。

context.registerBean(AutowiredAnnotationBeanPostProcessor.class);

结果:

        上面已经解析了@Autowired注解,但需对@Value注解进一步处理。

context.getDefaultListableBeanFactory().setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver());

4.CommonAnnotationBeanPostProcessor后处理器

context.registerBean(CommonAnnotationBeanPostProcessor.class);

结果如下:

       该后处理器主要用来解析@Resource注解,还可以解析@PostConstruct,@PreDestroy等注解。而且依赖注入按照一定的排序生效了,从结果来看是@Resource先生效。

http://www.dtcms.com/a/435576.html

相关文章:

  • 一款可视化的自动复盘系统分享
  • 郑州正云网站建设慈溪网站建设慈溪
  • 我爱学算法之—— 分治-快排
  • asp网站后台上传不了图片wordpress无法加载图片
  • 什么软件 做短视频网站长尾关键词有哪些
  • 江苏建设部官方网站外贸网站有必要吗
  • 企业网站规划案例长沙seo全网营销
  • 郑州营销网站公司地址天台县建设局官方网站
  • 函数调用约定
  • 迪杰斯特拉算法
  • 网站租用服务器价格个人主页网页设计模板
  • 【开题答辩实录分享】以《基于协调过滤算法的插画分享与社交网络平台的设计与实现》为例进行答辩实录分享
  • c语言定义数组
  • 网站运营问题wordpress主题报错
  • 做个网站需要多少钱?有没有旧装修要拆wordpress ck
  • 安卓基础组件024-fagment
  • Python 列表操作速查:增删改查与切片技巧
  • 泰州网站制作工具手机访问自动跳转到wap网站的代码
  • 家居企业网站建设讯息产品介绍彩页模板
  • Spring 基础核心 - SpringMVC 入门与请求流程
  • 【小沐学GIS】基于C++瓦片地图下载工具(高德/天地图/谷歌/必应/OSM/MapBox/ArcGIS)第十三期
  • 东方建设集团有限公司网站外国公司做网站
  • 微信里面如何做网站WordPress discuz 仿站
  • 【RabbitMq】七种工作模式
  • 官方网站下载cad建设部监理协会网站
  • 万方智能体投票火热进行中~
  • 不可见系统(Invisibility)
  • 建设读书网站的意义黄冈网站推广平台
  • SpringAI-Alibaba 快速开始
  • 网站制作费用一览表自己怎么设计公主房