首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
第2章-Spring基于XML配置的容器
返回列表
发新帖
第2章-Spring基于XML配置的容器
[复制链接]
发表于 2022-11-27 16:53:37
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
目录
一、Bean 管理
1. 元数据
2. Bean 实例化
2.1 构造器实例化
2.2 静态工厂方式实例化
2.3 实例工厂方式实例化
3. Bean 作用域
二、依赖注入
1. 依赖注入
1.1 构造器注入
1.2 Setter 方法注入
2. 依赖关系
3. 懒加载
4. 自动注入
三、附录
1. 配置属性表
2. 示例代码
Spring 的核心
功能
就是提供一个 IoC
容器
,用于管理应用程序中的 bean,在
容器
中
配置
元数据来管理 Bean 之间的依赖关系,Java 程序中的类都可以交由 Spring
容器
管理。
一、Bean 管理
1. 元数据
配置
Spring 元数据的方式有三种:
基于 XML 方式
配置
基于注解方式配置
基于 Java 方式配置
Spring 最早的时候提供BeanFactory接口实现 Bean 容器,而后面新增的许多
功能
都是基于其子接口ApplicationContext来实现的,前面说的三种配置方式,可以使用下面三个实现类来实例化容器。
|interface BeanFactory (org.springframework.beans.factory)
|---interface ApplicationContext (org.springframework.context)
|---|---class FileSystemXmlApplicationContext (org.springframework.context.support)
|---|---class ClassPathXmlApplicationContext (org.springframework.context.support)
|---|---class AnnotationConfigApplicationContext (org.springframework.context.annotation)
复制
代码
例如使用 ClassPathXmlApplicationContext 来通过 classpath 目录下的配置文件实例化容器:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
复制
代码
2. Bean 实例化
在 Spring 容器中配置好的 Bean 都会被 Spring 自动实例化,以供在开发过程中注入直接可以使用,而不需要手动去 new 对象。
2.1 构造器实例化
Spring 容器默认使用类的无参构造器来实例化 Bean,也可以指定其他带参数的构造器来实例化。
<bean id="beanProvider" />
<bean id="beanExample" >
<constructor-arg index="0" value="码匠公众号"/>
<constructor-arg index="1" value="2021"/>
<constructor-arg index="2" ref="beanProvider"/>
</bean>
复制
代码
2.2 静态工厂方式实例化
Spring 容器支持使用静态工厂方法来实例化 Bean,在类中定义一个 static 方法来创建对象实例。
public class BeanExample {
private static BeanExample beanExample = new BeanExample();
public static BeanExample getInstance() {
return beanExample;
}
}
复制代码
在 Bean 配置中使用 factory-method 属性来指定工厂方法。
[/code][size=3]2.3 实例工厂方式实例化[/size]
和静态工厂方法一样,不同的是工厂方法是实例化后的 Bean 的方法而不是静态方法。
[code]public class BeanExampleFactory {
private static BeanExample beanExample = new BeanExample();
public BeanExample getInstance() {
return beanExample;
}
}
复制代码
在 Bean 配置中使用 factory-bean 属性指定工厂类的 Bean,使用 factory-method 属性来指定工厂方法。
[/code][size=4]3. Bean 作用域[/size]
通过 scope 属性配置 bean 的作用域,来指定 bean 的实例化作用范围。
[code]
复制代码
常用的几种 Bean 作用域如下:
作用域描述singleton(默认)单例作用域,在 Spring 容器内部只创建一个实例prototype原型作用域,在容器中创建多个实例,每使用一次创建一个实例request请求作用域,在 Web 框架下单次请求创建一个实例session会话作用域,在 Web 框架下单次会话内创建一个实例application应用作用域,在 ServletContext 生命周期内创建一个实例
二、依赖注入
Spring 容器创建好了 Bean 实例后,会根据实例间的依赖关系来进行注入。
1. 依赖注入
1.1 构造器注入
通过类的构造器来注入依赖的值或 Bean。
<bean id="beanProvider" />
<bean id="beanExample" >
<constructor-arg index="0" value="码匠公众号"/>
<constructor-arg index="1" value="2021"/>
<constructor-arg index="2" ref="beanProvider"/>
</bean>
复制代码
1.2 Setter 方法注入
通过类的 Setter 方法注入依赖的值或 Bean。
<bean id="beanProvider" />
<bean id="beanExample" >
<constructor-arg index="0" value="码匠公众号"/>
<constructor-arg index="1" value="2021"/>
<constructor-arg index="2" ref="beanProvider"/>
</bean>
复制代码
在两种注入方式中,配置值的方式:
value:注入值
ref:注入引用(注入 Bean 实例)
2. 依赖关系
一般情况下,Bean 之间的依赖关系并不明确,但在一些情况下,比如初始化一个静态类,使用 depends-on 属性指定在初始化该 bean 之前,强制初始化依赖的一个或多个 bean。
[/code][size=4]3. 懒加载[/size]
一般情况下,Spring 会在容器启动的时候把所有 Bean 实例化完成,如果想在第一次使用的 Bean 的时候才初始化,可能配置 lazy-init 来实现。
[code]
复制代码
4. 自动注入
Spring 容器支持自动注入,而不需要手动通过 ref 来指定依赖的 bean 实例。
[code][/code]容器支持的注入方式:
注入方式描述no(默认)不使用自动注入byName通过 bean 名称注入byType通过 bean 类型注入constructor通过构造器参数类型注入
三、附录
1. 配置属性表
属性默认值描述id-指定 bean 的名称class-指定 bean 的类scopesingleton指定作用域depends-on-指定依赖关系lazy-initfalse配置懒加载autowireno配置自动注入factory-bean-指定提供工厂方法的 beanfactory-method-指定创建 bean 的工厂方法
2. 示例代码
Gitee 仓库:
https://gitee.com/code_artist/spring
代码目录:src/main/java/cn/codeartist/spring/bean/xml
回复
使用道具
举报
返回列表
浏览过的版块
Postrge-SQL
终端安全
麻花痒
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表