三種XML例項化Bean的配置方式
阿新 • • 發佈:2022-04-12
基於構造方法例項化物件
<bean id="apple2" class="com.example.s02.ioc.entity.Apple">
<constructor-arg name="title" value="紅富士"></constructor-arg>
<constructor-arg name="color" value="紅色"></constructor-arg>
<constructor-arg name="origin" value="歐洲"></constructor-arg >
<constructor-arg name="price" value="18.5"></constructor-arg>
</bean>
<bean id="apple3" class="com.example.s02.ioc.entity.Apple">
<constructor-arg index="0" value="紅富士"></constructor-arg>
<constructor-arg index="1" value="紅色"></ constructor-arg>
<constructor-arg index="2" value="歐洲"></constructor-arg>
<constructor-arg index="3" value="18.5"></constructor-arg>
</bean>
public class Apple {
private String title;
private String color;
private String origin;
private Float price;
public Apple() {
System.out.println("Apple物件已建立," + this);
}
public Apple(String title, String color, String origin) {
System.out.println("通過帶參構造方法建立物件" + this);
this.title = title;
this.color = color;
this.origin = origin;
}
public Apple(String title, String color, String origin,Float price) {
System.out.println("通過帶參構造方法建立物件" + this);
this.title = title;
this.color = color;
this.origin = origin;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getOrigin() {
return origin;
}
public void setOrigin(String origin) {
this.origin = origin;
}
}
2.利用靜態工廠獲取物件
<!--利用靜態工廠獲取物件-->
<bean id="apple4" class="com.example.s02.ioc.Factory.AppleStaticFactory"
factory-method="createSweetApple"/>
package com.example.s02.ioc.Factory;
import com.example.s02.ioc.entity.Apple;
/**
* 靜態工廠通過靜態方法建立物件,隱藏建立物件的細節
*/
public class AppleStaticFactory {
public static Apple createSweetApple() {
//logger.info("");
Apple apple = new Apple();
apple.setTitle("紅富士");
apple.setOrigin("歐洲");
apple.setColor("紅色");
return apple;
}
}
3.基於工廠例項方法例項化物件
<!--利用工廠例項方法獲取物件-->
<bean id="factoryInstance" class="com.example.s02.ioc.Factory.AppleFactoryInstance"/>
<bean id="apple5" factory-bean="factoryInstance" factory-method="createSweetApple"/>
package com.example.s02.ioc.Factory;
import com.example.s02.ioc.entity.Apple;
/**
* 工廠例項方法建立物件是指IoC容器對工廠類進行例項化並呼叫對應的方法建立物件的過程
*/
public class AppleFactoryInstance {
public Apple createSweetApple(){
Apple apple = new Apple();
apple.setTitle("紅富士");
apple.setOrigin("歐洲");
apple.setColor("紅色");
return apple;
}
}