Spring-IOC学习笔记-02基于XML创建Bean
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-IOC学习笔记-02基于XML创建Bean相关的知识,希望对你有一定的参考价值。
基于XML创建Bean
4.1 基于构造方法
4.1.1 无参构造
默认的就是无参构造
Women在无参构造输出
public Woman() {
System.out.println("无参海选女嘉宾");
}
配置bean
<bean id="lili" class="com.moon.entity.Woman">
<property name="name" value="莉莉"/>
<property name="age" value="18"/>
<property name="outLook" value="面容较好的"/>
</bean>
创建IOC
public static void main(String[] args) {
new ClassPathXmlApplicationContext("applicationContext.xml");
}
结果
4.1.2 有参数构造
在使用有参构造器创建时,也需要同时将依赖注入。
<bean id="lili" class="com.moon.entity.Woman">
<constructor-arg name="name" value="莉莉"/>
<constructor-arg name="age" value="18"/>
<constructor-arg name="outLook" value="面容较好的"/>
</bean>
4.2 基于工厂模式
隐藏创建的细节
4.2.1 静态工厂
java静态工厂类
public class WomanStaticFactory {
public static Woman selectLili(){
Woman lili = new Woman();
lili.setName("莉莉");
lili.setAge(18);
lili.setOutLook("面容较好的");
return lili;
}
public static Woman selectMary(){
Woman lili = new Woman();
lili.setName("玛丽");
lili.setAge(20);
lili.setOutLook("体态丰满的");
return lili;
}
}
配置静态工厂
<!-- 通过class定位到静态工厂类,使用factory-menthod定位到方法 -->
<bean id="lili" class="com.moon.factory.WomanStaticFactory" factory-method="selectLili"/>
<bean id="mary" class="com.moon.factory.WomanStaticFactory" factory-method="selectMary"/>
4.2.2 工厂实例
java实例工厂类
public class WomanFactory {
public Woman selectLili(){
Woman lili = new Woman();
lili.setName("莉莉");
lili.setAge(18);
lili.setOutLook("面容较好的");
return lili;
}
public Woman selectMary(){
Woman lili = new Woman();
lili.setName("玛丽");
lili.setAge(20);
lili.setOutLook("体态丰满的");
return lili;
}
}
配置实例工厂
<!-- 添加工厂的bean(使用工厂类的无参创建) -->
<bean id="factory" class="com.moon.factory.WomanFactory"/>
<!-- 不用使用class去定位,直接用factory-bean定位到一个工厂对象,使用factory-method定位到工厂方法 -->
<bean id="lili" factory-bean="factory" factory-method="selectLili"/>
<bean id="mary" factory-bean="factory" factory-method="selectMary"/>
4.3 配置文件书写规范
1、
<bean/>
标签中的id和name都是用来设置对象在IOC中标识。区别如下:
- 在 同一个配置文件中不可以重复
- 如果在不同配置文件中出现相同的 ID 和 Name的bean,排序在后面的bean会覆盖前面的 bean。
- 在 同一个bean中同时配置了id和name,那么 id为容器中的唯一标志,而name为别名,如果配置了多个name,那么 name全部是别名。
- 如果 这个bean只 配置了name,没有id,那么name为唯一标志。如果name配置了多个,那么第一个name是唯一标志,剩余的name为别名。
- 在一个bean中,name可以写多个标志,id只能设置唯一标志。
2、如果没有配置name和id的话,ioc容器会给bean设置一个默认标识,该标识是bean的class+#数字标识,数字从0开始。
com.moon.entity.Woman#0
如过根据标识去获取类,只写了全类名,ioc会去获取全类名+#0的bean,也就是第一个bean。
以上是关于Spring-IOC学习笔记-02基于XML创建Bean的主要内容,如果未能解决你的问题,请参考以下文章
Spring-IOC学习笔记-08基于JavaConfig开发