spring bean建立細節
1) 物件建立:
單例/多例
scope="singleton", 預設值,即預設是單例【service/dao/工具類】
scope="prototype", 多例;【Action物件】
2) 什麼時候建立?
scope="prototype" 在用到物件的時候,才建立物件。scope="singleton" 在啟動(容器初始化之前), 就已經建立了bean,且整個應用只有一個。
3)是否延遲建立
lazy-init="false" 預設為false, 不延遲建立,即在啟動時候就建立物件lazy-init="true" 延遲初始化, 在用到物件的時候才建立物件
(lazy-init只對單例有效)
4) 建立物件之後,初始化/銷燬
init-method="init_user" 【對應物件的init_user方法,在物件建立之後執行 】destroy-method="destroy_user"
【在呼叫容器物件的destriy方法時候執行,(容器用實現類),scope="singleton" 時有效】
<?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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="userId" class="b_bean.User" scope="singleton" lazy-init="false"
init-method="init_user" destroy-method="destroy_user"></bean>
</beans>
package b_bean;
public class User {
private int id;
private String name;
public User() {
System.out.println("User物件建立....");
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void init_user(){
System.out.println("init_user.....");
}
public void destroy_user(){
System.out.println("destroy_user.....");
}
}
package b_bean;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CreateBean {
@Test
public void test(){
//ApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");
//為了測試destroy-method,介面沒有方法
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");
System.out.println("ApplicationContext容器物件建立....");
User user1=(User) context.getBean("userId");
User user2=(User) context.getBean("userId");
System.out.println(user1);
System.out.println(user2);
context.destroy();
}
}
相關文章
- Spring bean詳細介紹SpringBean
- Spring IoC bean 的建立(上)SpringBean
- Spring建立Bean的過程DebugSpringBean
- Spring配置bean的詳細知識SpringBean
- Spring中用註解建立bean例項SpringBean
- Spring 原始碼(17)Spring Bean的建立過程(8)Bean的初始化Spring原始碼Bean
- Spring 原始碼(12)Spring Bean 的建立過程(3)Spring原始碼Bean
- Spring 原始碼(11)Spring Bean 的建立過程(2)Spring原始碼Bean
- Spring 原始碼(13)Spring Bean 的建立過程(4)Spring原始碼Bean
- Spring 原始碼(10)Spring Bean 的建立過程(1)Spring原始碼Bean
- Spring 原始碼(14)Spring Bean 的建立過程(5)Spring原始碼Bean
- spring原始碼深度解析— IOC 之 bean 建立Spring原始碼Bean
- Spring bean到底是如何建立的?(上)SpringBean
- spring原始碼閱讀筆記08:bean載入之建立beanSpring原始碼筆記Bean
- Spring(4)-AOP使用細節Spring
- Spring中Bean的例項化詳細流程SpringBean
- 【spring 原始碼】IOC 之bean例項的建立Spring原始碼Bean
- Spring(三)屬性配置細節Spring
- Spring 原始碼(9)Spring Bean的建立過程的前期準備Spring原始碼Bean
- Spring 原始碼(16)Spring Bean的建立過程(7)屬性填充Spring原始碼Bean
- Spring原始碼系列(一)--詳細介紹bean元件Spring原始碼Bean元件
- 死磕Spring之IoC篇 - Bean 的建立過程SpringBean
- [Spring]BeanSpringBean
- Spring 原始碼(14)Spring Bean 的建立過程(6)物件的提前暴露Spring原始碼Bean物件
- Spring中建立帶原型作用域bean5種方法Spring原型Bean
- Spring原始碼分析之Bean的建立過程詳解Spring原始碼Bean
- Spring Bean容器SpringBean
- 【Spring】Bean管理SpringBean
- 談談Spring中的物件跟Bean,你知道Spring怎麼建立物件的嗎?Spring物件Bean
- Spring原始碼淺析之bean例項的建立過程(一)Spring原始碼Bean
- Spring原始碼淺析之bean例項的建立過程(二)Spring原始碼Bean
- Spring bean 裝配SpringBean
- Spring Bean 綜述SpringBean
- Spring Bean作用域SpringBean
- spring boot factory beanSpring BootBean
- 淺談Spring BeanSpringBean
- Spring基礎(Bean)SpringBean
- Spring Bean 詳解SpringBean
- MYSQL索引建立需要注意以下幾點細節MySql索引