首页 > 其他分享 >springboot的bean的声明周期

springboot的bean的声明周期

时间:2023-09-11 16:34:42浏览次数:39  
标签:BeanPostProcessor springboot System bean println 声明 public out

  1. 创建对象
  2. 属性填充
  3. aware接口的对应方法
  4. init-method方法(@PostConstruct)
  5. initialingBean接口的方法
  6. BeanPostProcessor的前置方法
  7. BeanPostProcessor的后置方法
  8. DisposableBean的distory方法

测试对象

@Component
public class TestController implements BeanNameAware,InitializingBean, BeanPostProcessor,  DisposableBean {
    @Override
    public void setBeanName(String s) {
        System.out.println("setBeanName   "+s);
    }
    @PostConstruct
    public void init() {
        System.out.println("init");
        // ...
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("afterPropertiesSet");
    }
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessBeforeInitialization");
        return BeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName);
    }
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessAfterInitialization");
        return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("destroy");
    }
}

结果

setBeanName   testController
init
afterPropertiesSet
postProcessBeforeInitialization
postProcessAfterInitialization
重复出现postProcessBeforeInitialization,postProcessAfterInitialization
destroy

标签:BeanPostProcessor,springboot,System,bean,println,声明,public,out
From: https://www.cnblogs.com/xiuer211/p/17693843.html

相关文章

  • Spring源码分析(七)容器的扩展点(FactoryBean)
    在上篇文章中我已经对容器的第一个扩展点(BeanFactoryPostProcessor)做了一系列的介绍。其中主要介绍了Spring容器中BeanFactoryPostProcessor的执行流程,以及Spring自身利用了BeanFactoryPostProcessor完成了什么功能,对于一些细节问题可能说的不够仔细,但是当前阶段我想要做的......
  • 使用gradle的方式进行Springboot3的web开发(微服务版)
    简要:最近看了很多的Springboot3的项目,但是发现很多都是用maven来进行版本管理的,很少有用gradle来管理的,通过网上查找资料,看视频,终于自己写一个gradle管理的Springboot3的项目 第一步:创建项目注意:JDK的版本必须要在17或者以上。 第二步:设置gradle仓库 第三步:创建项目......
  • SpringBoot上传文件
    application.yaml配置上传路经,其实写在哪都行无所谓,就是引入配置文件,@Values注解赋值web:#绝对路经upload-path:D://test/springservlet:multipart:enabled:true#单个文件的最大上限max-file-size:1024MB#单个请求的文件总大......
  • SpringBoot跨域访问
    没有引入SpringSecuity的情况Christopher2021.10.23CORS后端跨域CORS是一种访问机制,Cross-OriginResourceSharing,跨域资源共享,通过在服务器端设置相应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin中即可。何为跨域域,即域名,跨域,即从域名A申请访......
  • 关于spring的注解作用(springboot相较于spring 的不同)
      springboot的@Bean注解作用在方法上,它会将这个方法返回的类型实例注入spring容器。  <bean>标签代表一个实例(或对象),而不是一个类型。在Spring中,<bean>标签用于声明和配置一个bean实例。当我们在XML配置文件中使用<bean>标签时,我们定义的是一个具体的b......
  • 分享一个 SpringBoot + Redis 实现「查找附近的人」的小技巧
    前言SpringDataRedis提供了十分简单的地理位置定位的功能,今天我就用一小段代码告诉大家如何实现。正文1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、更......
  • SpringBoot + 自定义注解,实现用户操作日志(支持SpEL表达式)
    背景一个成熟的系统,都会针对一些关键的操作,去创建用户操作日志。比如:XX人创建了一条订单,订单号:XXXXXXXXX因为操作人或者订单号是动态的,所以有些开发人员,不知道获取,就将这种操作日志和业务代码融在一起。我们当然要杜绝这种现象,一定会有更好的解决方案。当前项目除了......
  • SpringBoot创建Thymeleaf
    1.pom.xml导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 2.thymelef的默认配置文件springboot工程默认有一个templates文件夹,所有的html页面都放这个文件夹里。......
  • Spring 中 Bean 的生命周期
    在您的应用程序中,由SpringIoC容器管理的形成其核心的对象被称为"bean"。一个bean是由SpringIoC容器实例化、组装和管理的对象。这些bean是通过您提供给容器的配置元数据创建的,例如,在前面章节中已经看到的XML<bean/>定义。Bean定义包含了所谓的配置元数据,容器需要了解以下内容......
  • Spring源码分析(八)容器的扩展点(BeanPostProcessor)
    在前面两篇关于容器扩展的文章,我们已经完成了对BeanFactoryPostProcessor和FactoryBean的分析,对于BeanFactoryPostProcessor而言,它能让我们对容器中扫描出来的BeanDefinition做出修改以达到扩展的目的,而对于FactoryBean而言,它提供了一种特殊创建bean的手段,能让我们将一......