spring之bean的作用域
时间:2022-07-23
本文章向大家介绍spring之bean的作用域,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Car.java
package com.gong.spring.beans.autowire;
public class Car {
public Car() {
}
public Car(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Car [name=" + name + "]";
}
}
beans-scope.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="car" class="com.gong.spring.beans.autowire.Car" p:name="baoma"></bean>
</beans>
Main.java
package com.gong.spring.beans.autowire;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
//1.创建spring的IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml");
//2.从容器中获取Bean实例
Car car = (Car) ctx.getBean("car");
Car car2 = (Car) ctx.getBean("car");
System.out.println(car == car2);
System.out.println(car.toString());
}
}
输出:
默认情况下,在xml文件中配置的bean都是单例模式,即实例化这个相同类型的bean时,返回的是同一个对象,即实例化IOC容器ctx时,就已经创建好了一个唯一的bean。我们可以在xml中设置scope属性的值来改变bean的作用域。
<bean id="car" class="com.gong.spring.beans.autowire.Car" p:name="baoma" scope="prototype"></bean>
scope有四种值:
默认的就是singleleton,在指定为prototype之后,每次实例化的对象就不是同一个bean了。
- 机器学习:XGBoost 安装及实战应用
- Ryu:如何在LLDP中添加自定义LLDPDU
- 机器学习|kaggle数据挖掘和求解的基本步骤
- mybatis_generator_逆向工程的使用笔记
- 纳税服务系统总结
- 纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】
- 纳税服务系统三(优化处理)【异常处理、抽取BaseAction】
- 机器学习|快速排序思想求topk
- 纳税服务系统二(用户模块)【POI、用户唯一性校验】
- 纳税服务系统四(角色模块)【角色与权限、角色与用户】
- 纳税服务系统五(登陆与系统拦截)【配置系统、子系统首页、登陆与拦截】
- 纳税服务系统六(信息发布管理模块)【Ueditor、异步信息交互、抽取BaseService、条件查询、分页】
- 纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】
- Unikernel初体验
- 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 文档注释
- Greenplum 列存表(AO表)的膨胀和垃圾检查与空间收缩
- 数据结构系列:图文详解冒泡排序 & 优化
- Set 数据结构
- (数据科学学习手札97)掌握pandas中的transform
- tcp socket的发送与接收缓冲区
- Node.js模块化开发
- GO语言之旅:数组、切片
- 系统模块
- 深入 TypeScript 中的子类型,进阶 Vue3 源码前必须搞懂的。
- 第三方模块
- package.json文件的作用
- C语言的原子操作
- 【Linux】tmux命令使用教程
- 【Android 音视频开发打怪升级:FFmpeg音视频编解码篇】七、Android FFmpeg 视频编码
- 2020已经过去五分之四了,你确定还不来了解一下JS的rAF?