一 IOC-Bean對象創(chuàng)建的三種方式
- 無參構(gòu)造創(chuàng)建
- 靜態(tài)工廠創(chuàng)建
- 實例工廠創(chuàng)建
1 無參構(gòu)造創(chuàng)建(默認是無參的) - .xml配置
<!--無參構(gòu)造-->
<bean id="user" class="User"></bean>
- 對象定義
public class User {
public void add(){
System.out.println("add...................");
}
}
- 測試
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)建對象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對象
User user= (User) context.getBean("user");
user.add();
System.out.println(user);
}
}
2 靜態(tài)工廠創(chuàng)建
- .xml配置
<!--使用工廠創(chuàng)建對象-->
<bean id="bean2" class="Bean2Factory" factory-method="getBean2"></bean>
- 創(chuàng)建對象
public class Bean2 {
public void add(){
System.out.println("bean2............");
}
}
- 創(chuàng)建靜態(tài)工廠類
public class Bean2Factory {
public static Bean2 getBean2(){
return new Bean2();
}
}
- 測試
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)建對象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對象
Bean2 bean2= (Bean2) context.getBean("bean2");
System.out.println(bean2);
}
}
3 實例工廠創(chuàng)建
- .xml配置
<!--創(chuàng)建工廠對象-->
<bean id="bean3Factory" class="Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
注釋:因為不是靜態(tài)對象怜械,所以不能直接通過類名直接調(diào)用方法,所以要先通過類名。
- 對象創(chuàng)建
public class Bean3 {
public void add(){
System.out.println("bean3............");
}
}
- 實體工程類創(chuàng)建
public class Bean3Factory {
public Bean3 getBean3(){
return new Bean3();
}
}
- 測試
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)建對象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對象
Bean3 bean3= (Bean3) context.getBean("bean3");
System.out.println(bean3);
bean3.add();
}
}
二 Bean標簽常用屬性
(1) id屬性:起名稱奈嘿,id屬性值名稱任意命名
- id屬性值,不能包含特殊符號
- 根據(jù)id值得到配置對象
(2)class屬性:創(chuàng)建對象所在類的全路徑
(3)name屬性:功能和id屬性一樣的吞加,id屬性值不能包含特殊符號裙犹,但是在name屬性值里面可以包含特殊符號。
(4)scpoe屬性:
-
singleton:默認值衔憨,單例(只有一個對象)
1 .xml配置
2 測試
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)建對象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對象
User user1= (User) context.getBean("user");
User user2= (User) context.getBean("user");
System.out.println(user1);
System.out.println(user2);
}
}
3 運行結(jié)果
- 注釋:結(jié)果顯示,單例測試調(diào)用同一個User對象的兩個配置User對象輸出地址相同
- prototype:多例
1.xml配置
2 測試
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)建對象
ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");
//得到配置的對象
User user1= (User) context.getBean("user");
User user2= (User) context.getBean("user");
System.out.println(user1);
System.out.println(user2);
}
}
3 運行結(jié)果
注釋:多例測試掺冠,調(diào)用同一個User對象的兩個配置User對象輸出地址不同
- request:創(chuàng)建對象把對象放到request域里
- session:創(chuàng)建對象把對象放到session域里
- globalSession(全局):創(chuàng)建對象把對象放到globalSession域里(登錄一次,其他同類不用在登錄)