spring bean 的作用域有四种:singleton、prototype、session和request.
常用的有singleton和prototype两种。其他两种比较少用
使用bean的scope属性来配置bean的作用域
singleton:默认值。容器初始化时创建bean实例,在整个容器的生命周期内只创建这一个bean,单例的。
prototype:原型的,容器初始化时不创建bean实例,而在每次请求时都创建一个新的bean实例,并返回。
例如:
Car.java:
package com.ksk.spring;
public class Car {
private String brand;
private String corp;
private int price;
private int maxspeed;
public void setBrand(String brand){
this.brand = brand;
}
public void setPrice(int price){
this.price = price;
}
public Car(){
System.out.println("init....");
}
}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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 使用bean的scope属性来配置bean的作用域 singleton:默认值。容器初始化时创建bean实例,在整个容器的生命周期内只创建这一个bean,单例的。 prototype:原型的,容器初始化时不创建bean实例,而在每次请求时都创建一个新的bean实例,并返回。 --> <bean id="car" class="com.ksk.spring.Car" scope="singleton"> <property name="brand" value="audi"></property> <property name="price" value="30000"></property> </bean> </beans>
Main.java:
package com.ksk.spring.beans.scope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ksk.spring.Car;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-scope.xml");
// Car car = (Car) ctx.getBean("car");
// Car car2 = (Car) ctx.getBean("car");
//
// System.out.println(car);
// System.out.println(car2);
//
// System.out.println(car==car2);
}
}
当scope="singleton"时,输出为true,当scope="prototype"时,输出为false。本文出自 “我的青春我做主” 博客,谢绝转载!
原文:http://519524666.blog.51cto.com/3522143/1573884