SpringXML方式配置bean的生存范围Scope

在一个bean的配置里面可以指定一个属性Scope,也就是bean的范围,bean的生命周期。

Scope可取的值5种:singleton(默认)、prototype、request、session、global session

其中最常用的就是:singleton和prototype,其他的三个是和web相关的,很少使用。

singleton:也就是单例模式。表示这个bean是单例模式,每次获取都是同一个bean

prototype:多例模式,也就是每次获取的都是一个新对象,使用场景:在action上需要设置为prototype

例如:user这个bean,默认的Scope属性我们没有配置,也就是singleton模式


1

2

3

4

5

6

<bean name="user" class="com.fz.entity.User" >

    <property name="id" value="1"></property>

    <property name="username" value="fangzheng"></property>

    <property name="password" value="123456"></property>

    <property name="role" ref="role"></property>

</bean>

测试singleton,结果为true


1

2

3

4

5

6

7

@Test

public void getProperties(){

    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

    User user1 = (User) ctx.getBean("user");

    User user2 = (User) ctx.getBean("user");

    System.out.println(user1 == user2);//结果为true   

}

添加scope=prototype

在<bean>上加入scope=prototype之后。


1

2

3

4

5

6

<bean name="user" class="com.fz.entity.User" scope="prototype">

    <property name="id" value="1"></property>

    <property name="username" value="fangzheng"></property>

    <property name="password" value="123456"></property>

    <property name="role" ref="role"></property>

</bean>

测试prototype,结果为false


1

2

3

4

5

6

7

@Test

public void getProperties(){

    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

    User user1 = (User) ctx.getBean("user");

    User user2 = (User) ctx.getBean("user");

    System.out.println(user1 == user2);//结果为false

}

来自为知笔记(Wiz)

时间: 2024-10-09 17:22:29

SpringXML方式配置bean的生存范围Scope的相关文章

SpringXML方式配置bean的懒加载lazy-init

lazy-init(懒加载),表示该bean在容器初始化的时候不进行初始化. 例如: <bean name="role1" class="com.fz.entity.Role" lazy-init="true"> 以上配置表示:spring容器在初始化的时候不会初始化role1这个bean,当配置上lazy-init=true之后,表示该bean是懒加载模式,什么时候用到了该bean才会进行初始化. 它有两个值:true,false(

SpringXML方式配置bean的集合注入:list,map,properties

新建一个bean,设置相应的集合属性 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class Collections {     private Set<String> sets;     private List<String> lists;     private Map<String,String> maps;     public Set<String> get

跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参的构造器 2.依赖注入的方式 1)属性注入:通过setter方法注入Bean的属性值或依赖的对象 属性注入使用<Property>元素,使用name指定Bean的属性名称,使用value指定Bean的属

spring 注解方式配置Bean

概要: 再classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件 特定组件包括: @Component:基本注解,标示了一个受Spring管理的组件(可以混用,spring还无法识别具体是哪一层) @Respository:建议标识持久层组件(可以混用,spring还无法识别具体是哪一层) @Service:建议标识服务层(业务层)组件(可以混用,spring还无法识别具体是哪一层) @Con

跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Respository:标识持久层组件 3.@Service:标识业务层组件 4.@Controller:标识表现层组件 Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称 当在组件类上使用了特定的注解之后, 还需要在 Spring 的配置文件

SpringXML方式给bean初始化属性值

可以在Spring容器初始化bean的时候给bean的属性赋初始值,直接在property标签里设置即可 1 2 3 4 5 6 <bean name="user**" class="com.fz.entity.User" >     <property name="id" value="1"></property>     <property name="username&

Spring配置bean

基本 <?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:util="http://www.springframework.org/sch

使用java方式装配Bean

首先创建一个项目 然后是项目名 下图: 创建完项目先配置pom.xml依赖关系 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&qu

基于注解的形式配置Bean

基于注解的方式配置Bean:也就说我们在每个Bean的类名前面注解一下,Spring会自动帮我们扫描Bean放进IOC容器中 I基于注解的方式配置Bean(没有依赖关系的Bean)有两个步骤: 1组件扫描(component scanning): Spring 能够从 classpath( 类路径下,也就是Src文件夹下)下自动扫描, 侦测和实例化具有特定注解的组件.  特定组件包括: @Component: 基本注解, 标识了一个受 Spring 管理的组件   @Respository: 建