首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初始化Spring BeanBean初始化有哪些方式?

对于Spring Bean初始化归纳了下,主要可以归纳一下三种方式 @PostConstruct 标注方法 自定义初始化方法 实现 initializingBean 接口的afterPropertiesSet......"); } } 简单进行容器创建->装置配置->启动应用上下文..依赖查找Bean @Configurable public class BeanInitializationDemo {...应用上下文 applicationContext.close(); System.out.println("Spring 应用上下文已关闭..."); } @Bean...二、自定义初始化方法 自定义初始化方法大致可分为三种实现 XML 配置: Java 注解:@Bean(initMethod=”init”)...归纳 上面三种方式案例分别介绍了PostConstruct、initializingBean以及自定义Bean初始化的方法;从执行结果可以看出,他们的执行顺序是有一定的要求的。

4.7K21
您找到你想要的搜索结果了吗?
是的
没有找到

延迟初始化Spring Bean:延迟初始化Bean会影响依赖注入吗?

前面提到过Bean初始化方式,在Bean 的配置元信息时候我们知道Bean的元信息配置中有lazy-init 延迟初始化属性配置,延迟初始化Spring Bean 还有Java 注解API的方式实现...它的意思就是:它会去初始化或者是实例化我们所有的非延迟初始化的一个单体类或者单体Bean 进入方法里面又可以发现 // Instantiate all remaining (non-lazy-init...,普通的Bean在这里初始化 ,部分Bean是需要我们内部容器自己做初始化 。...,另一个在应用上下文启动之后 源码地址: https://gitee.com/iByteCoding/thinking-in-spring 往期推荐 初始化Spring BeanBean初始化有哪些方式...注册Spring Bean:如何将BeanDefinition注册到IoC容器? 定义Bean:什么是BeanDefinition?

1.5K30

spring源码分析:bean初始化

我们通过spring容器帮我们实例化并且维护bean的时候,有时候我们需要在bean在实例化完成的时候,帮我们做一些事情,这个时候我们就会使用到bean初始化方法。...我们这里分析的三个初始化方法如下,如果已经比较了解如何使用以及原理,可以跳过该文章 1.实现InitializingBean接口 2.使用@PostConstruct 3.使用@Bean(initMethod...这里就不再介绍bean创建的全过程了,如果感兴趣的可以参考我这篇文章(spring源码分析之如何解决循环依赖),这篇文章写的比较详细,我们直接从bean创建后,开始初始化的地方开始介绍 //AbstractAutowireCapableBeanFactory.java..., mbd); } } } 注释1通过实现InitializingBean方式来实现初始化的非常的简单,不做过多的介绍,注释2通过@Bean的方式稍微介绍一下。...bean创建的过程都是先封装成beanDefinition,如果这一块不了解的可以先阅读相关文章 上面我们已经知道InitializingBean和@Bean(initMethod=“xx”)来实现初始化方法的原理

23020

配置是否初始化Bean的方法

在Spring Boot:定制自己的starter一文提到,只要DbCountRunner这个类在classpath路径下,Spring Boot会自动创建对应的spring bean并添加到应用程序上下文中...在文章最后提到,Spring Boot的自动配置机制依靠@ConditionalOnMissingBean注解判断是否执行初始化代码,即如果用户已经创建了bean,则相关的初始化代码不再执行。...DbCountAutoConfiguration的自动配置信息 在BookPubApplication类中定义DbCountRunner的spring bean @Bean public DbCountRunner...DbCountRunner"); } }; } 再次运行程序,观察结果,可以看到这个配置信息放在Negative matchs组中,显示判断条件不匹配,因为已经找到dbCountRunner这个bean...手动配置的Bean优先 ? 修改后的日志信息,显示手动配置bean

85950

Spring源码初探-IOC(3)-Bean初始化-bean的加载

前言 前面两篇文章主要介绍的是xml到BeanDefinition的过程,我们知道在使用Spring的过程中通常直接使用getBean(beanName)的方式,getBean返回的是实例化并且已经完成初始化后的对象...抽丝剥茧出主干也就是: 根据BeanDefinition的信息找到对象构造器,实例化对象 根据BeanDefinition的信息找到属性值,填充之 如果有初始化方法,调用初始化方法 当然上述主干主要讲的是非单例对象...创建过程中提供的扩展点及事件监听 Spring的initiation过程及一种并行初始化的实现。...在getSingleton(beanName, singletonFactory)方法中会调用getObject(),实际上也就是调用了createBean,bean的创建实际上是从这个地方开始的。..., mbd); } 抽去一些不太重要的代码只有,整个逻辑非常清楚,首先createBeanInstance创建对象,然后填充对象populateBean,最后调用初始化方法initializeBean,

59420

延迟初始化Bean会影响依赖注入吗

前言 大家好,我是java小面,今天我们继续前面Spring文章比较核心的Bean内容的探讨,这次来探讨的是关于延迟初始化Bean是否会影响到依赖注入的问题,依赖注入一直以来都是Spring面试中的核心...Bean延迟初始化(Lazy Initialization) 它的使用很简单,可以通过xml来配置和Java 注解@Lazy来为Bean初始化进行配置。...那么问题来了,当某个Bean被定义为延迟初始化,那么当我们依赖注入拿到时,延迟和非延迟对象之间存在着什么差异呢?...Bean分了类,然后导致标识为正常初始化,非lazy-init的类或对象被定义成了剩余的单例。...总结 通过源码的深入,我们其实可以看出,延迟加载和非延迟加载在定义的时候,Bean注册的时候是没有区别的,在依赖查找和依赖注入的时候就明显不同了,非延迟是在上下文启动之前就初始化Bean了,而延迟是在Bean

49220

【死磕 Spring】—– IOC 之 bean初始化

这最后一步就是初始化,也就是 initializeBean(),所以这篇文章我们分析 doCreateBean() 中最后一步:初始化 bean。...applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName); } return wrappedBean; } 初始化...bean 的方法其实就是三个步骤的处理,而这三个步骤主要还是根据用户设定的来进行初始化,这三个过程为: 激活 Aware 方法 后置处理器的应用 激活自定义的 init 方法 激活 Aware 方法...BeanPostProcessor 的作用是:如果我们想要在 Spring 容器完成 Bean 的实例化,配置和其他的初始化后添加一些自己的逻辑处理,那么请使用该接口,这个接口给与了用户充足的权限去更改或者扩展...mbd.isExternallyManagedInitMethod(initMethodName)) { // 激活用户自定义的 初始化方法

58020

Spring源码初探-IOC(1)-Bean初始化

spring 体系结构图 Bean初始化 个人认为,Spring最原始或者最基础的功能是“容器”,帮你管理着一堆bean的生命周期,任你取用,要想更好的使用Spring,还是得了解Bean的整个生命周期...,首先了解Bean初始化过程。...本文采用XML配置文件的方式管理bean,分析XmlBeanFactory对于XML文件的解析过程。废话不多说,先上图: ?...getInputStream进行统一读取解析 Document:这个没啥好讲的,XML文档对象 EncodedResource:封装了Resource,指定Resource的编码 ReaderContext:Bean...定义的人,它做的可都是脏活累活,import/alias/bean等element以及element的子节点以及属性都是它解析并且填充到BeanDefinition中然后使用ReaderContext中的

39710

【小家Spring】AbstractAutowireCapableBeanFactory#populateBean实现Bean的属性赋值和initializeBean对Bean初始化

前言 在上一篇博文:【小家Spring】AbstractBeanFactory#getBean()、doGetBean完成Bean初始化、实例化,以及BeanPostProcessor后置处理器源码级详细分析...源码分析的时候,留下两个重要的步骤还没有说,一个是属性赋值的populateBean()(依赖注入),还有一个就是赋值后对Bean的一些初始化操作:initializeBean() Spring源码基于的...进行Bean初始化工作 上面步骤已经完成了Bean的属性的赋值工作,接下里就进行Bean的一些初始化工作,其中包括: 1:Bean后置处理器初始化 2:Bean的一些初始化方法的执行init-method...相当于当Servlet是以Bean的形式注入容器的时候,Bean初始化完成后,会自动调用它的init方法~~~~~~~~ //如果config为null,那么它传入可能为代理的DelegatingServletConfig...接口初始化 (如果配置了method-init,则调用其方法初始化 ) 调用applyBeanPostProcessorsAfterInitialization 初始化之后的处置操作 总结 populateBean

1K10
领券