• 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了。

  • 相关阅读:
    编程语言的简介
    ava 8 stream的详细用法
    Java 8 Steam 例子整理
    redis常用命令
    常用正则表达式
    保留一些常用文章
    tag的简单使用
    GitFlow详解教程
    Git基本命令和GitFlow工作流
    Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12152491.html
Copyright © 2020-2023  润新知