一 IOC-Bean對(duì)象創(chuàng)建的三種方式
- 無(wú)參構(gòu)造創(chuàng)建
- 靜態(tài)工廠創(chuàng)建
- 實(shí)例工廠創(chuàng)建
1 無(wú)參構(gòu)造創(chuàng)建(默認(rèn)是無(wú)參的) - .xml配置
<!--無(wú)參構(gòu)造-->
<bean id="user" class="User"></bean>
- 對(duì)象定義
public class User {
public void add(){
System.out.println("add...................");
}
}
- 測(cè)試
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by pc on 2017/9/7.
*/
public class TextIOC {
public static void main(String[] args) {
//加載Spring配置文件,并創(chuàng)建對(duì)象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對(duì)象
User user= (User) context.getBean("user");
user.add();
System.out.println(user);
}
}
2 靜態(tài)工廠創(chuàng)建
- .xml配置
<!--使用工廠創(chuàng)建對(duì)象-->
<bean id="bean2" class="Bean2Factory" factory-method="getBean2"></bean>
- 創(chuàng)建對(duì)象
public class Bean2 {
public void add(){
System.out.println("bean2............");
}
}
- 創(chuàng)建靜態(tài)工廠類(lèi)
public class Bean2Factory {
public static Bean2 getBean2(){
return new Bean2();
}
}
- 測(cè)試
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by pc on 2017/9/7.
*/
public class TextIOC {
public static void main(String[] args) {
//加載Spring配置文件,并創(chuàng)建對(duì)象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對(duì)象
Bean2 bean2= (Bean2) context.getBean("bean2");
System.out.println(bean2);
}
}
3 實(shí)例工廠創(chuàng)建
- .xml配置
<!--創(chuàng)建工廠對(duì)象-->
<bean id="bean3Factory" class="Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
注釋:因?yàn)椴皇庆o態(tài)對(duì)象,所以不能直接通過(guò)類(lèi)名直接調(diào)用方法,所以要先通過(guò)類(lèi)名。
- 對(duì)象創(chuàng)建
public class Bean3 {
public void add(){
System.out.println("bean3............");
}
}
- 實(shí)體工程類(lèi)創(chuàng)建
public class Bean3Factory {
public Bean3 getBean3(){
return new Bean3();
}
}
- 測(cè)試
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by pc on 2017/9/7.
*/
public class TextIOC {
public static void main(String[] args) {
//加載Spring配置文件,并創(chuàng)建對(duì)象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對(duì)象
Bean3 bean3= (Bean3) context.getBean("bean3");
System.out.println(bean3);
bean3.add();
}
}
二 Bean標(biāo)簽常用屬性
(1) id屬性:起名稱,id屬性值名稱任意命名
- id屬性值,不能包含特殊符號(hào)
- 根據(jù)id值得到配置對(duì)象
(2)class屬性:創(chuàng)建對(duì)象所在類(lèi)的全路徑
(3)name屬性:功能和id屬性一樣的,id屬性值不能包含特殊符號(hào),但是在name屬性值里面可以包含特殊符號(hào)。
(4)scpoe屬性:
-
singleton:默認(rèn)值,單例(只有一個(gè)對(duì)象)
1 .xml配置
單例.png
2 測(cè)試
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by pc on 2017/9/7.
*/
public class TextIOC {
public static void main(String[] args) {
//加載Spring配置文件,并創(chuàng)建對(duì)象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對(duì)象
User user1= (User) context.getBean("user");
User user2= (User) context.getBean("user");
System.out.println(user1);
System.out.println(user2);
}
}
3 運(yùn)行結(jié)果

運(yùn)行結(jié)果
- 注釋:結(jié)果顯示,單例測(cè)試調(diào)用同一個(gè)User對(duì)象的兩個(gè)配置User對(duì)象輸出地址相同
- prototype:多例
1.xml配置

多例
2 測(cè)試
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by pc on 2017/9/7.
*/
public class TextIOC {
public static void main(String[] args) {
//加載Spring配置文件,并創(chuàng)建對(duì)象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對(duì)象
User user1= (User) context.getBean("user");
User user2= (User) context.getBean("user");
System.out.println(user1);
System.out.println(user2);
}
}
3 運(yùn)行結(jié)果

運(yùn)行結(jié)果
注釋:多例測(cè)試,調(diào)用同一個(gè)User對(duì)象的兩個(gè)配置User對(duì)象輸出地址不同
- request:創(chuàng)建對(duì)象把對(duì)象放到request域里
- session:創(chuàng)建對(duì)象把對(duì)象放到session域里
- globalSession(全局):創(chuàng)建對(duì)象把對(duì)象放到globalSession域里(登錄一次,其他同類(lèi)不用在登錄)
