目录
1.通过构造器配置 bean
案例
使用细节:
1.
通过
index
属性来区分是第几个参数
2.
通过
type
属性来区分是什么类型
(
按照顺序
)
2.通过 p 名称空间配置 bean
增加命名空间配置
1.
在
beans.xml
配置
,
增加命名空间配置
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:
xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:
p
="http://www.springframework.org/schema/p"
xsi
:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
>
案例
![](https://i-blog.csdnimg.cn/blog_migrate/b71717291e1b2b1269c3118d12b2220d.png)
3.引用/注入其它 bean 对象
案例
4.引用/注入内部 bean 对象
案例
5.引用/注入集合/数组类型
list 集合
map 集合
properties 集合
数组
set集合
使用细节
6.通过 util 名称空间创建 list
增加util 名称空间配置
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:
xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:
p
="http://www.springframework.org/schema/p"
xmlns:
util
="http://www.springframework.org/schema/util"
xsi
:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
"
>
案例
7.级联属性赋值
说明:
spring 的 ioc 容器, 可以直接给对象属性的属性赋值, 即级联属性赋值
案例
8.bean 配置信息重用(继承)
案例
只能被继承,而不能实例化的情况
9.通过静态工厂获取对象
● 案例说明
在
spring
的
ioc
容器
,
可以通过静态工厂获取
bean
对象
●静态工厂代码:
package com.hspedu.spring.factory;
import com.hspedu.spring.bean.Monster;
import java.util.HashMap;
import java.util.Map;
/**
* @author 加棉
* @version 1.0
* 静态工厂类-可以返回Monster对象
*/
public class MyStaticFactory {
private static Map<String, Monster> monsterMap;
//使用 static代码块 进行初始化
//在java基础的时候,讲过的
static {
monsterMap = new HashMap<>();
monsterMap.put("monster01", new Monster(100,"牛魔王","芭蕉扇"));
monsterMap.put("monster02", new Monster(200,"狐狸精","美人计"));
}
//提供一个方法,返回Monster对象
public static Monster getMonster(String key) {
return monsterMap.get(key);
}
}
●xml配置:
10.通过实例工厂获取对象
● 案例说明
在
spring
的
ioc
容器
,
可以通过实例工厂获取
bean
对象
●实例工厂代码:
package com.hspedu.spring.factory;
import com.hspedu.spring.bean.Monster;
import java.util.HashMap;
import java.util.Map;
/**
* @author 加棉
* @version 1.0
* 实例工厂类
*/
public class MyInstanceFactory {
private Map<String, Monster> monster_map;
//通过普通代码块进行初始化
{
monster_map = new HashMap<>();
monster_map.put("monster_01", new Monster(100, "猴子精", "吃人"));
monster_map.put("monster_02", new Monster(200, "九头金雕", "如来神掌"));
}
//写一个方法返回Monster对象
public Monster getMonster(String key) {
return monster_map.get(key);
}
}
●xml配置:
11.通过 FactoryBean 获取对象(重点)
● 案例说明
在 spring 的 ioc 容器,通过 FactoryBean 获取 bean 对象(重点)
● MyFactoryBean 代码:
package com.hspedu.spring.factory;
import com.hspedu.spring.bean.Monster;
import org.springframework.beans.factory.FactoryBean;
import java.util.HashMap;
import java.util.Map;
/**
* @author 加棉
* @version 1.0
* 是一个FactoryBean
*/
public class MyFactoryBean implements FactoryBean<Monster> {
//这个就是你配置时候,指定要获取的对象对应key
private String keyVal;
private Map<String, Monster> monster_map;
{ //代码块,完成初始化
monster_map = new HashMap<>();
monster_map.put("monster_01", new Monster(300, "牛魔王~", "芭蕉扇~"));
monster_map.put("monster_02", new Monster(400, "狐狸精~", "美人计~"));
}
public void setKeyVal(String keyVal) {
this.keyVal = keyVal;
}
@Override
public Monster getObject() throws Exception {
return monster_map.get(keyVal);
}
@Override
public Class<?> getObjectType() {
return Monster.class;
}
@Override
public boolean isSingleton() {//这里指定是否返是单例
return false;
}
}
●xml配置:
●使用(获取bean):
12.通过属性文件给 bean 注入值
●创建配置文件
●xml配置: