寒假学习(7)

Bean 的生命周期
Spring 容器管理的 Bean 有一个完整的生命周期,这个生命周期包括:
1.实例化:Spring 容器会根据配置实例化 Bean 对象。
2.依赖注入:Spring 容器会自动注入所有需要的依赖(通过构造器注入、setter注入或字段注入)。
3.初始化:如果 Bean 实现了 InitializingBean 接口或配置了初始化方法,Spring 会调用相应的初始化方法。
4.销毁:当容器关闭时,Spring 容器会调用 DisposableBean 接口的销毁方法,或者配置了销毁方法的 Bean。

Bean 的作用域
pring 提供了不同的作用域来控制 Bean 的生命周期和可见性。常见的作用域有:
1.singleton(默认作用域):每个 Bean 在 Spring 容器中只有一个实例。
2.prototype:每次请求都会创建一个新的 Bean 实例。
3.request:每个 HTTP 请求都会创建一个新的 Bean 实例(适用于 Web 应用)。
4.session:每个 HTTP 会话都会创建一个新的 Bean 实例(适用于 Web 应用)。
5.globalSession:用于 Portlet 应用,每个全局 HTTP 会话都会创建一个新的 Bean 实例。

Spring集合注入

  1. 基于 XML 的集合注入
    Spring 允许通过 XML 配置文件将集合注入到 Bean 中。使用集合注入时,Spring 会根据集合的类型将 Bean 的值注入到相应的集合中。
    1.1 List 集合注入
<bean id="person" class="com.example.Person"><property name="friends"><list><ref bean="friend1"/><ref bean="friend2"/></list></property>
</bean>
在这个示例中,Person 类中的 friends 属性是一个 List,并且将 friend1 和 friend2 两个 Bean 注入到 friends 集合中。Spring 容器会将这两个 Friend 对象注入到 List 集合中。

1.2 Set 集合注入

<bean id="person" class="com.example.Person"><property name="hobbies"><set><value>Reading</value><value>Swimming</value><value>Traveling</value></set></property>
</bean>

在这个例子中,Person 类的 hobbies 属性是一个 Set 集合,Spring 会将多个 value 元素注入到 Set 集合中,确保元素的唯一性。

1.3 Map 集合注入

<bean id="person" class="com.example.Person"><property name="contactInfo"><map><entry key="email" value="person@example.com"/><entry key="phone" value="123-456-7890"/></map></property>
</bean>

在这个例子中,Person 类中的 contactInfo 属性是一个 Map,将 email 和 phone 键值对注入到 Map 中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879324.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet基础

什么是Servlet、Servlet的架构、Servlet任务、Servlet的基本使用、Servlet的生命周期、Servlet API中主要接口及实现类、Servlet的部署(注册与映射)、缺省Servlet与启动时加载配置、ServletConfig与ServletContext、request和response什么是Servlet基础 Java Servlet 是运行在…

GNURadio模块学习——Source and Sink类

介绍GNU Radio中常见的 Source 与 Sink 模块,包括流程图端口、音频输入输出、虚拟连接、文件读写、ZMQ跨流程图通信,以及随机信号源、固定信号源、噪声源等常见信号源和时域、频域、星座图等信号展示工具。Source and Sink Pad(流程图端口) 当该流程图是hierarchical block…

【C++】gflag使用指南

一、什么是gflags? gflags 是一个用于定义命令行参数的 C++ 库,它由 Google 开发并开源。通过 gflags,你可以轻松地在你的程序中添加各种类型的命令行选项,包括整数、布尔值、字符串等,并且可以为这些选项设置默认值。此外,gflags 还提供了强大的帮助信息生成功能,使得用…

【C++】Google benchmark理解与应用

一、介绍 Google Benchmark 是一个用于 C++ 的微基准测试库。它旨在帮助开发者编写出更高效、更具表现力的基准测试代码。通过使用 Google Benchmark,可以方便地测量函数或代码片段的性能,并且能够生成详细的报告。 二、安装与配置 2.1 安装 在Ubuntu环境中安装Google Benchm…

LRU浅析

LRU算法LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使…

20250205 省选模拟赛 T3

20250205 省选模拟赛 T3 Description 设计一个 \(n\times n\) 的 01 矩阵,使得从 \((1,1)\) 走到 \((n,n)\) 且只能向右或下走且只经过为 \(1\) 的格子的方案数为 \(X\)。 \(n \leq 24\) 时得满分。\(X \leq 10^9\)。 Solution 基于 \(2\) 进制的构造方法我们称从左上到右下的…

Automa:自动化浏览器工作流

🏷️仓库名称:AutomaApp/automa 🌟截止发稿星数: 14340 (今日新增:33) 🇨🇳仓库语言: Vue 🤝仓库开源协议:Other 🔗仓库地址:https://github.com/AutomaApp/automa引言 Automa是一个浏览器扩展,允许用户通过连接模块来自动化浏览器任务。它消除了重复性任务的需…

本地部署DeepSeek教程

本地部署DeepSeek教程 步骤 本地部署DeepSeek教程步骤 1 安装Ollama 2 下载DeepSeek模型 3 可视化图文交互界面Chatbox(可选)1 安装Ollama 访问Ollama官网下载Ollama,默认安装即可。安装完成后打开终端(我这里是windows系统),输入: ollama help即可查看ollama选项,且可…

OpenLDAP篇-安装OpenLDAP服务01

1、OpenLDAP统⼀⽤户认证系统 1.1 为什么需要OpenLDAP 在没有OpenLDAP统⼀⽤户认证系统的环境中,往往会⾯临如下问题:1、当⽤户需要访问多台服务器时,管理员需要在每台服务器上⼿动创建账户。如果员⼯离职,还需逐台删除账户,整体操作繁琐且容易出现遗漏的情况,因此存在较…

集训3 20240127

集训3 20240127 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A: 题目大意:给定 \(n\) ,两个人轮流可以使 \(n\) 减去一个任意小于它且与它互质的数,求最后甲能否取胜 #include<bits/stdc++.h>using namespace std;int main() {long long n;cin&g…

RocketMQ实战—4.消息零丢失的方案

大纲 1.全链路分析为什么用户支付完成后却没有收到红包 2.RocketMQ的事务消息机制实现发送消息零丢失 3.RocketMQ事务消息机制的底层实现原理 4.是否可以通过同步重试方案来代替事务消息方案来实现发送消息零丢失 5.使用RocketMQ事务消息的代码案例细节 6.同步刷盘+Raft协议同步…

qoj7301 AGC036D 题解

qoj7301 orz yxx 有一个很牛的状态设计 \(f_{i,j,0/1}\),\(0\) 为 \(a_{i-1}>a_i\),\(j\) 记录 \(a_{i-1}\) 的值,\(a_i\) 的值未定;\(1\) 为 \(a_{i-1}<a_i\),\(j\) 记录 \(a_i\) 的值 这样可以完美解决 \(a_{i-1}>a_i<a_{i+1}\) 的问题 转移和优化都是简单的…