一.對象創(chuàng)建單例/多例
scope="singleton"
, 默認(rèn)值, 即 默認(rèn)是單例 【service/dao/
工具類】
scope="prototype"
, 多例; 【Action
對象】
讀取創(chuàng)建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>
二.什么時(shí)候創(chuàng)建?
scope="singleton"
單例 在啟動(dòng)(容器初始化之前), 就已經(jīng)創(chuàng)建了bean,且整個(gè)應(yīng)用只有一個(gè)。
scope="prototype"
多例 在用到對象的時(shí)候,才創(chuàng)建對象。
- 1.單例配置文件(容器創(chuàng)建之前就已經(jīng)創(chuàng)建):
<bean id="user" class="com.huan.Bean.User" scope="singleton"></bean>
- 2.多例配置文件()
<bean id="user" class="com.huan.Bean.User" scope="prototype"></bean>
三 是否延遲創(chuàng)建
lazy-init="false"
默認(rèn)為false, 不延遲創(chuàng)建,即在啟動(dòng)時(shí)候就創(chuàng)建對象
lazy-init="true"
延遲初始化, 在用到對象的時(shí)候才創(chuàng)建對象(只對單例有效)
- 1.單例配置文件(容器創(chuàng)建之前就已經(jīng)創(chuàng)建):
<bean id="user" class="com.huan.Bean.User" scope="singleton" lazy-init="true"></bean>
image.png
四. 創(chuàng)建對象之后,初始化/銷毀
init-method="init_user"
【對應(yīng)對象的init_user方法,在對象創(chuàng)建愛之后執(zhí)行 】
destroy-method="destroy_user"
【在調(diào)用容器對象的destriy方法時(shí)候執(zhí)行,(容器用實(shí)現(xiàn)類)】
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("創(chuàng)建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("在對象創(chuàng)建時(shí)訪問該方法");
}
public void destroy_user(){
System.out.println("在對象銷毀時(shí)執(zhí)行");
}
}
配置文件
<bean id="user" class="com.huan.Bean.User" scope="singleton" lazy-init="false"
init-method="init_user" destroy-method="destroy_user"></bean>
讀取創(chuàng)建user對象:
public class Test2 {
@Test
public void test1(){
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
System.out.println("創(chuàng)建容器");
User user = (User) applicationContext.getBean("user");
User user2 = (User) applicationContext.getBean("user");
System.out.println(user);
System.out.println(user2);
applicationContext.destroy();
}
}
上一篇:Spring框架入門