Spring中bean的生命周期
时间:2021-09-03
本文章向大家介绍Spring中bean的生命周期,主要包括Spring中bean的生命周期使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
0.开发环境
开发工具:
STS(Spring Tool Suite)
jar包:
commons-logging-1.1.3.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
bean的作用域
- Singleton 单例
- Prototype 多例
- Request 在一次请求中有效
- Session 在一此会话中有效
单例
测试bean: Student.java
package com.moon.ioc.scope;
public class Student {
private Integer sid;
private String sname;
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
/*@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + "]";
}*/
}
配置文件scope.xml
,bean的属性scope设置为singleton
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.moon.ioc.scope.Student" scope="singleton">
<property name="sid" value="1001"></property>
<property name="sname" value="王朝" ></property>
</bean>
</beans>
测试代码:Test.java
package com.moon.ioc.scope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("scope.xml");
Student student1 = ac.getBean("student", Student.class);
Student student2 = ac.getBean("student", Student.class);
System.out.println(student1);
System.out.println(student2);
}
}
运行结果:
创建两个Student实例,内存地址是一样的
信息: Loading XML bean definitions from class path resource [scope.xml]
com.moon.ioc.scope.Student@402a079c
com.moon.ioc.scope.Student@402a079c
原文地址:https://www.cnblogs.com/tukiran/p/15222936.html
- 出租车、巴士、单车、AI全入局 首汽约车着力搭建出行生态圈
- 如何运行ruby代码
- 图解NodeJS【基于事件、回调的单线程高性能服务器】原理
- CListBox
- 如何在Eclipse中添加Tomcat的jar包
- c++---函数
- Ruby对象模型总结
- Elasticsearch 管理文档
- Elasticsearch聚合 之 Ip Range IP地址范围聚合
- Elasticsearch聚合 之 DateRange日期范围聚合
- 域名投资大佬Mike Mann以约19.5万美金出售加密货币相关域名
- Elasticsearch聚合 之 Range区间聚合
- Elasticsearch集群管理
- 图m着色问题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 从零搭建SpringBoot+MyBatis+MySQL工程
- 从零搭建SpringBoot+MyBatis+MySQL
- Typescript 使用日志(干货)
- 22+ 高频实用的 JavaScript 片段 (2020年)
- VSCode 的这些黑科技 99% 的人都不知道
- YOLOv4 中的 Mish 激活函数
- pdbsplit将多个chain的pdb文件分割
- rk3399 wifi和eth0共存 调试
- 23条JavaScript初学者应知的最佳实践方法
- 黑板客爬虫闯关游戏
- Python自学成才之路 多进程开发
- Python自学成才之路 进程间通信
- android 功耗(1)---android 功耗分析方法和优化
- 为什么要写 tf.Graph().as_default()
- tf.get_variable_scope().reuse_variables() 的使用