1、抽象Bean写法:
<bean id="hello" abstract="true"/>
因为程序实例化容器的时候不会初始化abstract Bean,所以加不加class属性都无关紧要。
2、什么时候会使用到Bean的继承:
1)、应用规模增加,配置文件部分组件重复量增加,即可把这部分重复的配置信息单独调出来,定义成abstract。而实际的Bean配置成它们的子类继承就可以了。
2)、写法如下:
<bean id="chinese" class="com.sxit.service.Chinese" abstract="true"/>
<bean id="children" parent="chinese"/>
3)、如果父类写了class属性,则子类不需要写,如果子类写了,则以子类的class类来创建Bean实例,子类的属性会覆盖父类定义的属性。
3、容器中的工厂Bean:
1)、这里所说的工厂Bean和之前说的不一样,这里的工厂Bean是指实现了FactoryBean接口的Bean。
2)、FacroryBean接口中有三个方法:
T getObject() ;//返回该工厂Bean生产的Java实例
Class<?> getObjectType();//返回该工厂Bean生产的Java实例的实现类
boolean isSingleton();//该工厂Bean生产的Java实例是否是单例模式
4、工厂Bean:
package com.sxit.service;
import org.springframework.beans.factory.FactoryBean;
public class PersonFactory implements FactoryBean<Person> {
Person p = null;
public Person getObject() throws Exception {
if(p == null){
p = new Chinese();
}
return p;
}
public Class<?> getObjectType() {
return Chinese.class;
}
public boolean isSingleton() {
return true;
}
}
5、配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
<bean id="personFacrory" class="com.sxit.service.PersonFactory"/>
</beans>
6、测试类:
package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.sxit.service.Chinese;
public class Test3 {
public static void main(String[] args) {
ApplicationContext apc = new ClassPathXmlApplicationContext("Bean3.xml");
Chinese chinese = apc.getBean("personFacrory",Chinese.class);
chinese.info("中国人");
Chinese chinese2 = apc.getBean("personFacrory",Chinese.class);
System.out.println(chinese == chinese2);
}
}
7、打印信息:
我是:中国人
8、小结:
1)、当调用getBean()方法得到的不是工厂Bean本身,而是工厂Bean负责生产的Bean,也就是getObject()里面的东西。
2)、如果需要获取工厂Bean本身,getBean("&Bean Id")即可,如下:
System.out.println(apc.getBean("&personFacrory"));
com.sxit.service.PersonFactory@10f11b8
分享到:
相关推荐
spring学习笔记spring学习笔记spring学习笔记spring学习笔记spring学习笔记spring学习笔记spring学习笔记spring学习笔记
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
Spring学习笔记( spring视频笔记)
spring学习笔记
SPRING学习笔记2SPRING学习笔记2SPRING学习笔记2SPRING学习笔记2
网易云课堂黑马Spring四天精通学习笔记&源码(数据库要另建)
文件内附有学习源码及“四万多字的学习笔记”,本学习笔记中涵盖了,Spring中所学的全部知识点,以及还有一些小的知识点。(笔记很详细,笔记很详细。属于本人舍得删系列)。
Spring学习笔记.
Spring Cloud 学习入门笔记,全方面实践,包含 spring cloud alibaba 模块
Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc
“Java Spring学习笔记”是一份宝贵的资源,专门为想要学习和掌握Java Spring框架的开发者而设计。这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用...
SPRING学习笔记,是本人在学习期间记录的。希望大家喜欢
笔记都是markdown格式的,请自行下载阅读器进行查看个人推荐Typora,当然notepad++也行
Spring6学习笔记,师承老杜
三更springsecurity学习笔记
Spring学习笔记.xmind
尚学堂Spring学习笔记.马士兵的,看了很受用,摘录了一些
这是学习spring时整理的学习笔记,里面都是spring框架的一些基础知识和核心技术。
spring2.5 学习笔记spring2.5 学习笔记spring2.5 学习笔记