zoukankan      html  css  js  c++  java
  • spring容器中bean的初始化

    当我们在spring容器中添加一个bean时,如果没有指明它的scope属性,则默认是singleton,也就是单例的。

    例如先声明一个bean:

    public class People {
    	private String name;
    	private String sex;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	
    }	
    

     在applicationContext.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-4.1.xsd">
        
        <bean id="people" class="People"  ></bean>
    
    </beans>

     

     然后通过spring容器来获取它:

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    
    public class SpringTest {
    
    	public static void main(String[] args) {
    		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
    		People p1=(People) context.getBean("people");
    		People p2=(People) context.getBean("people");
    		System.out.println(p1);
    		System.out.println(p2);
    	}
    
    }
    

     运行之后可以看出p1和p2输入的内容是一样的,说明spring中的bean是单例的。

    如果不想要单例的bean,可以将scope的属性改为prototype

    <bean id="people" class="People" scope="prototype" ></bean>

    这样通过spring容器获取的bean就不是单例的了。

    spring容器默认情况下在启动之后就自动为所有bean创建对象,若想要在我们获取bean时才创建的话,可以使用lazy-init属性

    该属性有三个值defalut,true,false。默认是default,该值和false一样,都是spring容器启动时就创建bean对象,当指定为true时,

    在我们获取bean时才创建对象。

  • 相关阅读:
    hdu1209(Clock)
    [NodeJS]使用Node.js写一个简单的在线聊天室
    UVa 11168 Airport , 凸包
    【数据结构与算法】(二) c 语言链表的简单操作
    Struts简单介绍
    bzoj3931【CQOI2015】网络吞吐量
    python爬虫解决百度贴吧登陆验证码问题
    TNS-01251: Cannot set trace/log directory under ADR
    Oracle 监听器日志文件过大导致监听异常
    RHEL7
  • 原文地址:https://www.cnblogs.com/ChanSS/p/5572911.html
Copyright © 2011-2022 走看看