IOC
操作 – Bean
管理
一、什么是Bean
管理
概念:
- Spring创建对象
- Spring注入(由Spring注入属性)
二、Bean
管理操作
2.1、基于xml实现创建对象
-
方式:在配置文件中,使用Bean标签,添加对象的对应的属性,就可以实现对象创建
-
属性说明:
id
: bean的唯一表示class
:类的全路径name
:作用类似id,但可以多个
-
创建对象时,默认执行无参构造方法
-
注册一个bean ,将bean交给sprin容器管理 默认情况下,所有的bean都是单例的 但是,可以通过scope修改其生命周期 prototype : 原型 也就是,每一次get都是new出来的,地址不同 spring 是一个大型工厂,可以搜集零件,注册到工厂内 之后进行装配
<bean id="mockServlet2"
class="net.duck.spring.ioc.MockServlet2"></bean>
2.2、基于xml方式注入属性(依赖注入)
- 非引用类型,使用
value
添加默认值 - 引用类型,即自己定义的类,使用
ref
,添加默认值 - map、List,使用对应的标签进行注册
Demo:
<!-- 注册一个bean -->
<bean scope="singleton" init-method="init" destroy-method="destory" id="mockServlet1" class="net.duck.spring.ioc.MockServlet1">
<!-- 为String、int类型添加默认值 -->
<property name="username" value="duck"></property>
<property name="age" value="10"></property>
<!-- 为引用类型添加默认值,需要注册过的 -->
<property name="mockServlet2" ref="mockServlet2"></property>
<!-- 为List类型添加默认值 -->
<property name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
<!-- 为Map类型添加默认值 -->
<property name="map">
<map>
<entry key="duck" value="cool"></entry>
<entry key="pig" value="beautiful"></entry>
</map>
</property>
</bean>
在处理文件获取bean,并获取相应信息
/**
* 应用上下文,创建spring容器
*/
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// 获取到写在xml的bean实例
MockServlet1 mockServlet1 = (MockServlet1) context.getBean("mockServlet1");
System.out.println(mockServlet1.getUsername());
System.out.println(mockServlet1.getAge());
System.out.println(mockServlet1.getMockServlet2());
Map<String, String> maps = mockServlet1.getMap();
Set<String> values = maps.keySet();
for(String key : values) {
System.out.println("key: " + key + " value: " + maps.get(key));
}
List<Integer> list = mockServlet1.getList();
for (Integer inits : list) {
System.out.println(inits);
}