SpringBean

SpringBean生命周期详解 SpringBean生命周期详解 一、简述: Spring是我们每天都在使用的框架,Bean是被Spring管理的Java对象,是Spring框架最重要的部分之一,那么让我们一起了解一下Spring中Bean的生命周期是怎样的吧 二、流程图 我们先从宏观的角度看一下Spring的生命周期: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201028174058916.png?x-oss-process=image/watermark,t ype_ZmFuZ3poZW5 阅读详情

 

对于使用Spring框架的开发人员来说,做的两件事情就是:①开发Bean  ②配置Bean  

可以把Spring容器理解成一个工厂,Bean实例就是该工厂的产品,工厂(Spring容器)里能生产出来什么样的产品(Bean实例),取决于我们在配置文件中的配置。而Spring帮我们做的就是根据配置文件来创建Bean实例,并调用Bean实例的方法来完成“依赖注入”。

1. 容器中Bean的作用域

singleton使用 singleton 定义的Bean,只创建唯一实例
prototype 每次获取Bean实例时,都创建一个新实例。(原型模式)
request对于每次request,都创建一个新实例。
session对于每次session,都创建一个新实例。
global session每个全局的session,创建一个新实例。


    1. 对于singleton,每次都获得唯一实例,Spring负责维护此实例的生命周期;(如果不指定,默认使用singleton)

    2. 对于prototype,每次获取Bean实例,都创建一个新实例,Spring不再维护实例的生命周期。创建销毁实例代价比较大。

    3. 使用 request,session,global session,在配置Bean之前,需要做少量的初始配置。(将http请求绑定到提供该服务的线程上,这使得具有request 和 session的Bean实例能够被访问到)

    4. 如果使用SpringMVC,则无须设置,因为DispatcherServlet 和DispatcherPorlet已经执行了相应的处理。

 

使用DispatcherServlet 以外的Servlet, 2.4及以上规范的Web 容器需要在“web.xml”中如下配置:

<listener>
     <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

早期版本的Web容器,不支持Listener ,只能改为Filter配置方式:

<filter>
     <filter-name>requestContextFilter</filter-name>
     <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
     <filter-name>requestContextFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>

2. 容器中Bean的生命周期

    Spring可以管理singleton的Bean的生命周期,Spring可以知道bean何时被创建,何时初始化,何时销毁Bean实例。

    Bean初始化两种方式:

     1. 使用init-method 属性(松耦合)

         在类中编写一个方法,在属性中指定该方法在依赖关系设置完成后自动执行。

     2. 实现InitializingBean接口,实现afterPropertiesSet()方法(紧耦合)

    Bean销毁两种方式:

     1. 使用 destroy-method属性  

     2. 实现DisposableBean接口,实现destroy()方法。

prototype的Bean,Spring容器只负责Bean的创建。每次请求prototype的Bean时,都会产生一个新的Bean实例。

3. Spring 的 Bean 和 JavaBean比较

    1. Spring 中的Bean 是放在容器中的任意一个类的对象;而JavaBean是具有无参构造方法的实体类。

4. Spring 的Bean继承

    1. Spring中子Bean和父Bean可以是不同的类型。
    2. Spring中Bean的继承是实例之间的关系,主要表现为参数值的延续。

5. Bean 实例的创建方式及依赖配置

     大多数情况下,BeanFactory 直接通过new创建Bean 实例,而class属性指定了Bean实例的实现类。但这并不是实例化Bean的唯一方法。

6. 创建Bean三种方式

    1) 调用构造方法     

    BeanFactory 将使用默认的构造方法来创建Bean实例,对此实例的所有属性执行默认初始化,即所有基本类型的值初始化为0或false,引用类型初始化为null,接下来BeanFactory会根据配置文件,创建依赖的其他Bean 实例,然后为Bean注入依赖的其他实例。

    2) 使用静态工厂方法

    使用静态工厂方法创建Bean实例时,class属性指定的是静态工厂类,根据工厂类的工厂方法来创建Bean实例;此外,还需要使用factory-method 属性来指定静态工厂方法名。

    使用静态工厂方法创建Bean实例时,Spring将先解析配置文件,通过反射调用静态工厂类的静态工厂方法。

    3) 使用实例工厂方法

    调用实例工厂方法则必须使用工厂实例。使用实例工厂方法时,配置的<bean../>无需class属性,需要如下两个属性:factory-bean属性,factory-method属性。如果需要调用工厂方法时传入参数,使用<constructor-arg.../>。

静态工厂方法和实例工厂方法的不同点:

    1. 调用实例工厂方法创建Bean,必须使用factory-bean属性确定工厂Bean。而静态工厂方法创建Bean,则使用class 元素确定静态工厂类。

静态工厂方法和实例工厂方法的相同点:

    1. 都需要factory-method 指定工厂方法。

    2. 都可以使用<constructor-art.../>元素指定参数。

普元eos-springbean开发 立即下载

相关推荐

IGBT模块封装中的银烧结技术:为什么特斯拉和比亚迪都在用这种黑科技?

本文深入解析了IGBT模块封装中的银烧结技术,揭示了其作为功率半导体封装工艺关键升级的原因。该技术通过低温烧结形成高熔点、高导热导电的银连接层,显著提升了模块的功率循环寿命、散热能力和高温工作稳定性,这正是特斯拉、比亚迪等行业巨头采用此项黑科技以释放电动汽车电驱系统极致性能的核心所在。

yhn4567890的博客 833

关于springboot启动报错bean找不到原因解析

一.普通的dao,service对应的实例bean不存在 报错示例: 1.Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class。 解决方案: 1.确实不存在,加进去就好了 2.类存在,但是spring没有扫描到,注意启动类所在

m0_67392661的博客 5096

Word多级标题出现黑块的解决思路(word 数字必须介于1-1638之间)

遇到多级目录出现黑块问题,看到一篇博客完美解决,在此记录。

AI_Optimization的博客 3714

【Java基础】Spring 中 Bean 的理解与使用

一、定义 Bean 是 Spring 框架中最核心的两个概念之一(另一个是面向切面编程 AOP) Spring 官方文档对 bean 的解释是: In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, asse

yuxiangdeming的博客 7万+

从零到一:Admin.NET中Swagger与Knife4jUI的深度集成实践

本文详细介绍了在Admin.NET框架中深度集成Swagger与Knife4jUI的实践方法,从基础配置到高级定制,包括认证配置、安全增强、界面主题定制等。通过Furion框架简化配置,开发者可以快速构建专业且友好的API文档界面,提升团队协作效率。

defi6farmer的博客 407

嵌入式存储实战:FAL+SFUD+flashDB三件套在STM32上的完整移植指南(附避坑技巧)

本文提供了一套在STM32上完整移植FAL、SFUD与flashDB嵌入式存储框架的实战指南。详细解析了从SPI驱动配置、SFUD设备识别、FAL抽象层分区到flashDB键值数据库初始化的全流程,并分享了关键的避坑技巧与性能优化建议,帮助开发者构建稳定可靠的嵌入式存储系统。

rnn9storyteller的博客 1015

SpringBean详解

Spring Bean 是 Spring 框架中的核心概念之一,它表示由 Spring 容器管理的对象。Spring Bean 可以是任何 Java 类的实例,包括简单的 JavaBean、业务逻辑对象、数据访问对象、甚至是整合了第三方库或框架的对象。Bean 定义(Bean Definition):Spring Bean 通过 Bean 定义来描述。Bean 定义是一个配置元数据,它包含了创建和配置 Bean 的信息,包括 Bean 的类名、依赖关系、初始化方法、销毁方法等。

刘皇叔说Java的博客 4381

南方cass9.1【Frame主框架程序没有加载】解决方法(附安装包)

南方cass9.1【Frame主框架程序没有加载】解决方法。

weixin_46066938的博客 3万+

Spring中的bean是什么

Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。 1 定义 Spring 官方文档对 bean 的解释是: In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled,

m0_52789121的博客 7689

基于Termux的Android平台OpenClaw部署:移动端AI助理实现

本文介绍了在Android设备上通过Termux部署OpenClaw AI助理的方案。Android设备的便携性、Termux提供的完整Linux环境以及多样化的硬件配置使其成为理想的部署平台。文章详细分析了不同级别Android设备的硬件规格(从入门级到旗舰级),并提供了最低/推荐配置要求。部署步骤包括Termux安装初始化、Python环境配置以及性能优化建议。该方案充分利用Android设备的传感器和电池供电优势,为移动办公、学习等场景提供了低成本、高便携性的AI助理解决方案。

博客 3010

OCS2 入门教程(一)

OCS2 是专为切换系统优化控制(ptimalontrol forwitchedystems,OCS2)定制的 C++ 工具箱。该工具箱提供以下算法的高效实现:SLQ:连续时间域约束 DDPiLQR:离散时域约束 DDPSQP:基于 HPIPM 的多重打靶算法IPM: 基于非线性内点法的多重搜索算法SLP:基于 PIPG 的顺序线性规划算法OCS2 通过增强拉格朗日法(Augmented Lagrangian)或松弛障碍法(relaxed barrier methods)处理一般路径约束。

机器人控制与仿真应用 7836

Spring学习-Bean的理解

在Spring框架中,Bean是指在Spring容器中管理的一个对象。Spring容器通过对Bean的管理,实现了依赖注入、面向切面编程、声明式事务管理等核心特性。Spring的Bean可以是普通Java对象、JavaBean、POJO(Plain Old Java Object)等类型的对象,还可以是数据源、连接池、JMS(Java消息服务)等非常复杂的对象。在Spring中,Bean是通过IoC(Inversion of Control,控制反转)容器创建、装配和管理的。

郝老三~~~~~~~~~~~~~ 1万+

10、皮肤 - 神经记录实验全流程解析

本博客详细介绍了皮肤-神经记录实验的全流程,涵盖实验所需的材料准备和具体操作方法。内容包括细胞外记录设备的设置、合成间质液(SIF)的制备与调节、小鼠后爪皮肤和胫神经的手术解剖步骤、清洁解剖后的记录准备、纤维分离与感受野识别方法,以及神经纤维机械响应的测量。该实验为研究神经纤维的活动与功能提供了重要的技术支持,适用于神经科学研究领域。

backprop5master的博客 185

SpringBean的生命周期

SpringBean的生命周期详情提供一种配置方式,在XML配置中指定Bean的初始化方法。如果Bean在配置文件中定义了初始化方法那么该方法会被调用。在的invokelnitMethods方法中调用如果Bean在配置文件中定义了销毁方法,那么该方法会被调用在的destroy方法中实现可以看到,整Bean的创建的过程都依赖于这个类,而销毁主要依赖这个类的入口处,doCreateBean的核心代码如下,其中包含了实例化、设置属性值、初始化Bean以及注册销毁回调的几个核心方法。

蒾酒的博客 2329

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SpringBean管理

在Spring中将管理对象称为 Bean.Bean是由一个SpringIOC容器实例化,组装和管理的对象.也就是说,Bean并不是由我们程序员编写的,而是在程序运行过程中,由Spring通过反射机制生成的.SpringBean是Spring框架在运行时管理的对象,我们编写的大多数逻辑代码都会存放在SpringBean中.

weixin_52629592的博客 2042

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

系统学习SpringFramework:SpringBean的注入方式

本篇内容包括:Spring 容器简介(什么是容器、容器如何工作)、SpringBean 注入方式(SpringBean 注入方式分类、@Autowiring 自动绑定)以及 获取 Spring Bean 的工具类!

栗筝i的博客 4828

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBean的常见面试题

什么是springbean? 由springioc容器管理的对象就是一个bean,是由ioc容器实例化,组装,管理的对象 javabean和springbean的区别? 所谓javaBean, 是指符合如下标准的Java类: 1.类是公共的 2.有一个无参的公共的构造器 3.有属性且有对应的get. set方法 配置bean有哪几种方式? 1.xml: <bean class=“com.tuling.UserService” id=> 2.注解: @Component(@Controller 、

qq_35757264的博客 1973

Springboot使用websocket注入SpringBean

开始:在webSocket中是不能直接使用autowired注入SpringBean的。 解决方法: 1.在webSocket类中加入以下代码。 /** * 解决无法注入 */ private static ApplicationContext applicationContext; //你要注入的bean private StudentRepo...

QuedYin的博客 1144

websocket中注入springbean实例,@ServerEndpoint标注的类中注入springbean

Springboot中使用@ServerEndpoint 标注的websocket服务,注入springbean 失败,空指针

qq_39826116的博客 1373

springBean生命周期

一、springBean的生命周期 1、 启动spring容器,也就是创建beanFactory(bean工厂), 一般用的是beanFactory的子类applicationcontext, applicationcontext比一般的beanFactory要多很多功能,比如aop、事件等。 通过applicationcontext加载配置文件,或者利用注解的方式扫描将bean 的配置信息加载到spring容器里面。 2、 加载之后,spring容器会将这些

zhangCheng的博客 2万+

Spring——SpringBean初始接口

本文详细介绍了Spring框架中SpringBean的初始化接口和注解,包括BeanPostProcessor接口、InitializingBean接口和@PostConstruct注解。文章解释了这些接口和注解的原理、作用、适用场景,并提供了示例代码。最后,对比了不同SpringBean初始化方式的优缺点。

庄小焱 1403

JavaBean和SpringBean的区别?

什么是JavaBean: JavaBean是一种JAVA语言写的可重用组件。JavaBean符合一定规范写的Java类,是一种规范。它的方法命名,构造以及行为必须符合特定的要求: 1.所有属性为private 2.这个类必须具有一个公共的(public)无参构造函数 3.private属性必须提供public的getter和setter来给外部访问,并且方法的命名也必须遵循一定的命名规范 4.这个类是可序列化的,要实现serializable接口 什么是SpringBean: SpringBea

张铎 3512

springbean的生命周期_一步一步,带你了解SpringBean的生命周期

推荐阅读:Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC一个SpringBoot问题就干趴下了?我却凭着这份PDF文档吊打面试官.SpringBean的生命周期在面试中,我们经常会被问到一个问题,就是SpringBean的生命周期。用大白话说,就是说其在创造到销毁按顺序调用了什么方法,在我刚开始学了,一般就是对着标准答案去硬背,完全不了...

weixin_39596975的博客 103
上一篇: SpringMVC
下一篇: Spring和SpringMVC 父子容器关系
安卓学吧
博客等级 码龄11年 110粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值