bean初始化的三种方式

最全Spring初始化Bean的方法 阅读详情

概念的个人理解:

    IoC(控制反转):对于这个的理解首先要明白的是反转了什么,既然有反转那么正向是什么?

    在没有spring之前是应用程序直接自己控制资源而有了spring之后应用程序就不需要自己去了解资源底层的一切

    由容器去控制资源了,这里对资源的控制权发生了改变,这就叫控制反转

DI(依赖注入):现在应用程序如果需要资源就直接向容器要,它不用管这个资源怎么来的只需要用它就可以了

这里容器向应用程序提供资源就叫依赖注入

实例化的两种方式:一般使用ApplicationContext,它是建立在BeanFactory之上的,拥有更多的方法

   BeanFactory:延迟加载(使用时加载)

    ApplicationContext:立即加载(初始化时加载)

初始化的三种方法:

1.类构造器初始化:最常用的方法,也是最简单的方法,构造器可以不用写可以用默认的

public class Bean1 {
	public Bean1() {
		System.out.println("bean 构造方法");
	}
	public void fn() {
		System.out.println("bean1 fn.....");
	}
}

xml文件中的配置:

<!--构造器初始化  -->
1.类构造器(不写就行),默认调用构造器无参方法
<bean class="com.array.ioc.bean.xml.init.Bean1" id="bean1"></bean>

测试代码:

   

ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean1 bean1 = (Bean1) axt.getBean("bean1");
bean1.fn();

2.静态工厂初始化(了解)

bean类:
public class Bean2 {
public void fn() {
System.out.println("bean2 fn");
}
}
工厂类:方法必须是静态的,否则报错
public class Bean2Factory {
	public static Bean2 getInst() {
		//
		System.out.println("Bean2 getinst");
		return new Bean2();
	}
}
测试代码:
ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean2 bean2 = (Bean2) axt.getBean("bean2");
bean2.fn();

3.实例工厂初始化:

bean类
public class Bean3 {
	public void fn() {
		System.out.println("bean3 fn");
	}
}

工厂类:

public class Bean3Factory {
	public Bean3 getInst() {
		//
		System.out.println("Bean3 getinst");
		return new Bean3();
	}
}

xml文件配置:

<!-- 首先要创建实例工厂bean -->
<bean class="com.array.ioc.bean.xml.init.Bean3Factory" id="beanFactory"></bean>
<!-- 实例工厂初始化-->
<bean factory-bean="beanFactory" factory-method="getInst" id="bean3"></bean>

测试类:

ApplicationContext axt = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean3 bean3 = (Bean3) axt.getBean("bean3");
bean3.fn();





Spring Bean初始化终极指南:三种核心方式与执行顺序深度解析 Spring框架提供了三种Bean初始化方式: 1️⃣ @PostConstruct注解(JSR-250标准)实现解耦初始化; 2️⃣ InitializingBean接口提供早周期回调; 3️⃣ init-method配置支持完全解耦的初始化方法。 执行顺序为:@PostConstruct → InitializingBean → init-method。建议优先使用@PostConstruct和init-method以降低耦合,保留InitializingBean用于特殊时序需求。三种方式可组合使用,开 阅读详情

相关推荐

Chapter19:初始化Bean的三种方式

说明: 项目地址在文章最后 本章代码所在分支为chapter19 代码规则:每章一个分支 后一章代码继承前一章代码 1 简介 初始化Bean是在实例化Bean之后,将Bean刷新到Map<String, BeanDefinition>之前的操作。Bean生命周期概况如图1.1所示: 图1.1 Bean生命周期概况 初始化Bean有三种方式: (1)@PostConstruct (2)InitializingBean的afterPropertiesSet方法 (3)自定义initMetho

天然玩家的博客 687

Bean初始化

原文转载:https://www.cnblogs.com/twelve-eleven/p/8080038.html 一、简单介绍 1、init-method方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。init-method需要在applicationContext.xml配置文档中bean的定义里头写明。 例如: <bean id="TestBean" class="...

sxudong2010的博客 2355

手把手教你用Simulink搭建PMSM FOC控制模型(附完整仿真文件下载)

本文手把手教你使用Simulink搭建完整的永磁同步电机(PMSM)磁场定向控制(FOC)仿真模型。内容涵盖从电机与逆变器建模、核心的坐标变换(Clark/Park变换)实现、电流环与速度环PID整定,到SVPWM调制与系统集成调试的全过程,并提供关键参数设置与实用调试技巧,帮助工程师快速掌握FOC的工程实现。

silver的专栏 861

Spring初始化bean的三种方式(构造函数,静态工厂,实例工厂)

当我们使用 Spring 框架时,最常见的任务之一就是初始化 Bean。Bean 是 Spring 框架的核心概念之一,它代表了应用程序中的一个对象,可以是任何 Java 对象。以下介绍Spring实例化bean的三种方式。

apple_52793577的博客 1626

Linux CentOS7文件系统(/dev/var)的容量扩充

原因是之前安装docker后,再想安装Nessus,系统说home、var文件系统的内存都不够。

JHoanna的博客 3224

SC-FDMA

<br />SC-FDMA(Single-carrier Frequency-Division Multiple Access,單載波分頻多工),是LTE的上行鏈路的主流多址。<br />SC-FDMA是單波載(Single-carrier),與OFDMA相比之下具有的較低的PAPR(峰值/平均功率比,peak-to-average power ratio),比多載波的PAPR低1-3dB左右(PAPR是由于多載波在频域叠加引起)。更低的PAPR可以使行動終端(mobile terminal)在發送功效方面

jod的专栏 3299

Bean的初始化过程

1.生成BeanDefinition 扫描某个包路径,并得到BeanDefinition的Set集合 2. 合并BeanDefinition Spring中支持父子BeanDefinition。根据child来生成Bean对象之前,需要进行BeanDefinition的合并,得到完整的child的 BeanDefinition。 3.加载类 BeanDefinition合并之后,就可以去创建Bean对象了,而创建Bean就必须实例化对象,而实例化就 必须先加载当前BeanDefinition所对应.

weixin_44778073的博客 4158

Virtualbox “Kernel driver not installed (rc=-1908)”问题全面解析与修复指南

本文全面解析了Virtualbox出现'Kernel driver not installed (rc=-1908)'错误的原因及修复方法。详细介绍了如何通过重新安装virtualbox-dkms、处理Secure Boot特殊情况等步骤解决该问题,并提供了预防措施与最佳实践,帮助用户避免类似错误再次发生。

weixin_30352645的博客 528

Spring Bean的初始化过程是怎么样的?

BeanPostProcessor是Spring IOC容器给我们提供的一个扩展接口,他的主要作用主要是帮我们在Bean的初始化前后添加一些自己的逻辑处理,Spring内置了很多BeanPostProcessor,我们也可以定义一个或者多个 BeanPostProcessor 接口的实现,然后注册到容器中。其实就是先确保这个Bean对应的类已经被加载,然后确保它是public的,然后如果有工厂方法,则直接调用工厂方法创建一本Bean,如果没有的话就调用它的构造方法来创建这个Bean。

sinat_53467514的博客 2293

树莓派4B安装 ubuntu20.04 & VNC远程桌面 & 安装ROS noetic

树莓派4B安装ubuntu20.04 & VNC远程桌面1、安装ubuntu方式1:下载Imager文件。方式2:下载镜像文件。2、查询树莓派 IP 地址3、使用ssh远程登录树莓派4、更新源地址5、更新6、安装桌面环境7、允许root登陆8、登陆远程桌面9、设置中文 1、安装ubuntu 方式1:下载Imager文件。...

weixin_44415639的博客 2万+

【AgentScope 2.0】01-不搭 demo,直接解剖一个生产级 Agent 平台:loser-agent 全链路地图

本文介绍生产级Agent平台loser-agent的完整请求旅程,从用户发消息到返回结果共七站:入口鉴权、灰度路由、Agent装配、模型路由、工具执行、持久化与流式响应。课程以真实源码为线索,深入剖析每一步实现逻辑,涵盖灰度发布、权限控制、HITL审批、多模态处理、状态持久化等核心能力。强调框架仅负责Agent运行时语义,平台自建管理请求生命周期中所有非框架部分,适合Java后端开发者系统掌握Agent工程化落地。

loser.with.m的博客 724

Spring初始化bean的三种方式 详细版

Spring初始化bean的方式有三种 1 xml配置init-method 2 实现InitializingBean 接口 3 注解 @postConstruct 详细教程开始 1 xml配置init-method 创建User类 public class User { private static final String defaultName="Join"; private String name; private int age=Integer.MIN_VALUE;

weixin_45473138的博客 2820

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

Sprng Bean 初始化的三种方式?

Spring Bean 初始化的三种方式1. @PostConstruct 方式2. 实现 InitialzingBean 接口的 afterPropertiesSet() 方法3. 自定义初始化方法 创建一个实体类 DefaultFactory.class public class DefaultUserFactory implements InitializingBean { // 1. 基于 PostConstruct 注解 @PostConstruct public vo

weixin_40007779的博客 414

YOLOv5改进 | 注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制,附二次创新)

本文给家大家带来的改进机制是iRMB,其是在论文Rethinking Mobile Block for Efficient Attention-based Models种提出,论文提出了一个新的主干网络EMO(后面我也会教大家如何使用该主干,本文先教大家使用该文中提出的注意力机制)。其主要思想是将轻量级的CNN架构与基于注意力的模型结构相结合(有点类似ACmix)我将iRMB和C2f结合,然后也将其用在了检测头种进行尝试三种结果进行对比,针对的作用也不相同,但是无论那种实验均有一定涨点效果。

Snu77的博客 2570

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Spring Bean初始化三种常用方式(详细易懂版)

掌握这三种方式的核心逻辑和适用场景,能帮助你在实际开发中灵活处理Bean的初始化需求,避免踩坑

码刀攻城 1700

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring初始化Bean的三种方式

常用的设定方式有以下三种: 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法; 通过 &lt;bean&gt; 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法; 在指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前...

菜鸟腾飞 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Bean的三种初始化方式和两种注入方式!!!

首先,bean的初始化方式有三种 官方文档1.3.2节,初始化bean 三种方式分别是通过构造器初始化,通过静态工厂初始化,通过实例化工厂初始化 其次,bean的注入方式只两种 官方文档1.4.1依赖注入章节下 通过构造器注入和通过set方法注入 我找第三种依赖注入方法找了几十篇文章,原来它根本就不存在!!! ...

A15705688454的博客 577

spring三种Bean的初始化和销毁方式

Maven搭建好项目贴上依赖&lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt;4.3.2.RELEASE&amp

GaoChenXi 2765

Spring中bean初始化的三种方式

 (1)配置文件    &lt;!-- 1.构造方法实例化bean --&gt;     &lt;bean id="book" class="service."/&gt;     &lt;!-- 2.使用静态工厂方法实例化bean ,由于方法是static,可以通过类名调用方法,所以实例化抽象工厂--&gt;     &lt;bean id="person" class="ser

AN_MIN的博客 2191

Spring Bean 初始化的三种方式

常用的设定方式有以下三种: 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法; 通过 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法; 在指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调用。 

hk_优快云的博客 5177

spring-bean生命周期之初始化和销毁的三种方式

https://mp.weixin.qq.com/s?__biz=MzAxMjY1NTIxNA==&mid=2454441970&idx=1&sn=55a4491608d6f05a5a406b73024bbc6d&chksm=8c11e0f3bb6669e54a1499a2aad09d38ceb68d40a88dfd89bd53de0fbe84238fa45caf7...

晓梦初醒的博客 390

spring bean的初始化和销毁的三种方式

1、初始化和销毁bean的第一种方式:第一步:在XML文件中创建的bean中添加init-method和destroy-method配置项第二步:在XML文件中创建init-method和destroy-method配置项所对应值(即方法名)的方法如下面的start()和stop()方法 import org.springframework.beans.factory.Disp...

weixin_30596343的博客 180

17、Spring初始化Bean的三种方式

Spring Bean实例的创建方式以及依赖配置 创建Bean通常有三种方法: 1、调用构造器创建; 2、静态工厂创建; 3、实力工厂创建。 A、构造器创建:最常用使用设置注入的方式,要求该类提供无参构造器。这种情况下,class元素是必须的,除非采用继承,class属性值就是Bean的实现类。     Java代码如下:     public interface Person{

u010724583的专栏 792

Spring中bean初始化与销毁的三种方式

一、生命周期 定义 初始化 使用 销毁 二、初始化与销毁的三种方式 1. 实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法 首先beans.xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xml...

kjgym的博客 349

Spring Bean 生命周期全解析:初始化、销毁与三种方式的执行顺序实战

本文详细探讨了Spring框架中Bean生命周期的管理方式,主要包括三种实现方法:1)通过init-method和destroy-method配置;2)使用JSR-250规范的@PostConstruct和@PreDestroy注解;3)实现InitializingBean和DisposableBean接口。文章通过代码示例展示了这三种方式在单例Bean和原型Bean中的不同表现,重点分析了它们的执行顺序(注解→接口→配置方法)以及各自的特点和适用场景。同时,文章还揭示了原型Bean生命周期管理的特殊性。

一起交流学习吧! 1475
上一篇: spring的第一个简单例子
下一篇: bean的作用域scope
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值