4.XML中实例化Bean的配置方式
基于构造方法实例化对象
如果<bean>中不写任何配置信息,则调用无参构造实例化对象
<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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!