目录
基于XML配置Bean
id分配规则
通过id获取bean
通过类型获取bean
通过C命名空间配置bean
使用C命名空间
通过P命名空间配置bean
通过util:list进行配置bean
指定id,直接ref引用过来
通过外部属性文件配置Bean
Bean信息重用(继承)
基于XML自动装配
byName
byType
基于XML配置Bean
private ConcurrentHashMap<String,Object> singletonObejcts = new ConcurrentHashMap();
xml中存放bean的唯一id、全路径以及属性信息
反射创建对象,默认会调用无参构造方法
将id和对象放入单例池Map<String(id),Object(bean)>
解析xml配置文件就会创建xml里设置的所有对象
new ClassPathXmlApplicationContext("s1.xml",""s2.xml");可以写多个xml文件,可变长
不一定是自定义的bean,可以是系统存在的类,如Date
<bean id="birthBean" class="java.util.Date"/>
BeanFactory是ioc容器的顶级接口,负责创建Bean对象,是一个工厂
也可以用BeanFactory代替ApplicationContext
id分配规则
bean不带id,系统会默认分配id,分配id的规则是 全类名#0, 全类名#1
通过id获取bean
通过类型获取bean
要求ioc容器中的同一个类的bean只能有一个
应用场景:比如Servlet/Controller/Service 在一个线程中只需要一个对象实例(单例)的情况
通过C命名空间配置bean
不使用C命名空间
1. constructor-arg标签可以指定使用构造器的参数
2. index表示构造器的第几个参数 从0开始计算的
3. 除了可以通过index 还可以通过 name / type 来指定参数方式
4. 类的构造器,不能有完全相同类型和顺序的构造器,所以可以通过type来指定
使用C命名空间
构造器注入的一种快捷实现方式
必须存在有参构造器
可以不要get、set方法
通过P命名空间配置bean
set注入的一种快捷实现方式
必须存在set方法和无参构造器
可以不要有参构造器
通过util:list进行配置bean
必须存在set方法
指定id,直接ref引用过来
通过外部属性文件配置Bean
必须存在set方法
在resoureces目录下新建xx.properties
Bean信息重用(继承)
基于XML自动装配
自动装配:Spring会在上下文中自动查找,并自动给Bean装配与其相关的属性
在xml配置文件中的bean标签中加入一个属性autowire:一般是byName或byType
byName
通过名字完成自动装配(必须要有set方法)
1、找class对应实体类
2、看属性的setXxx方法中的Xxx,然后首字母小写xxx
3、在配置文件中查找 id=xxx 的Bean
byType
Spring会自动寻找一个与该属性类型相同的Bean,注入进来,保证类型中是唯一的Bean