Spring--Bean创建细节
2017-06-24 本文已影响128人
Mr_欢先生
一.对象创建单例/多例
scope="singleton"
, 默认值, 即 默认是单例 【service/dao/
工具类】
scope="prototype"
, 多例; 【Action
对象】
读取创建user对象:
public class Test2 {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
@Test
public void test1(){
User user = (User) applicationContext.getBean("user");
User user2 = (User) applicationContext.getBean("user");
System.out.println(user);
System.out.println(user2);
}
}
- 1.单例配置文件:
<bean id="user" class="com.huan.Bean.User" scope="singleton"></bean>
image.png
- 2.多例配置文件
<bean id="user" class="com.huan.Bean.User" scope="prototype"></bean>
二.什么时候创建?
scope="singleton"
单例 在启动(容器初始化之前), 就已经创建了bean,且整个应用只有一个。
scope="prototype"
多例 在用到对象的时候,才创建对象。
- 1.单例配置文件(容器创建之前就已经创建):
<bean id="user" class="com.huan.Bean.User" scope="singleton"></bean>
- 2.多例配置文件()
<bean id="user" class="com.huan.Bean.User" scope="prototype"></bean>
三 是否延迟创建
lazy-init="false"
默认为false, 不延迟创建,即在启动时候就创建对象
lazy-init="true"
延迟初始化, 在用到对象的时候才创建对象(只对单例有效)
- 1.单例配置文件(容器创建之前就已经创建):
<bean id="user" class="com.huan.Bean.User" scope="singleton" lazy-init="true"></bean>
image.png
四. 创建对象之后,初始化/销毁
init-method="init_user"
【对应对象的init_user方法,在对象创建爱之后执行 】
destroy-method="destroy_user"
【在调用容器对象的destriy方法时候执行,(容器用实现类)】
user.java
package com.huan.Bean;
/**
* Created by 马欢欢 on 2017/6/24.
*/
public class User {
private int id;
private String username;
private String password;
public User(){
System.out.println("创建user对象");
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void init_user(){
System.out.println("在对象创建时访问该方法");
}
public void destroy_user(){
System.out.println("在对象销毁时执行");
}
}
配置文件
<bean id="user" class="com.huan.Bean.User" scope="singleton" lazy-init="false"
init-method="init_user" destroy-method="destroy_user"></bean>
读取创建user对象:
public class Test2 {
@Test
public void test1(){
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
System.out.println("创建容器");
User user = (User) applicationContext.getBean("user");
User user2 = (User) applicationContext.getBean("user");
System.out.println(user);
System.out.println(user2);
applicationContext.destroy();
}
}
上一篇:Spring框架入门