Bean 的生命周期
Spring 容器管理的 Bean 有一个完整的生命周期,这个生命周期包括:
1.实例化:Spring 容器会根据配置实例化 Bean 对象。
2.依赖注入:Spring 容器会自动注入所有需要的依赖(通过构造器注入、setter注入或字段注入)。
3.初始化:如果 Bean 实现了 InitializingBean 接口或配置了初始化方法,Spring 会调用相应的初始化方法。
4.销毁:当容器关闭时,Spring 容器会调用 DisposableBean 接口的销毁方法,或者配置了销毁方法的 Bean。
Bean 的作用域
pring 提供了不同的作用域来控制 Bean 的生命周期和可见性。常见的作用域有:
1.singleton(默认作用域):每个 Bean 在 Spring 容器中只有一个实例。
2.prototype:每次请求都会创建一个新的 Bean 实例。
3.request:每个 HTTP 请求都会创建一个新的 Bean 实例(适用于 Web 应用)。
4.session:每个 HTTP 会话都会创建一个新的 Bean 实例(适用于 Web 应用)。
5.globalSession:用于 Portlet 应用,每个全局 HTTP 会话都会创建一个新的 Bean 实例。
Spring集合注入
- 基于 XML 的集合注入
Spring 允许通过 XML 配置文件将集合注入到 Bean 中。使用集合注入时,Spring 会根据集合的类型将 Bean 的值注入到相应的集合中。
1.1 List 集合注入
<bean id="person" class="com.example.Person"><property name="friends"><list><ref bean="friend1"/><ref bean="friend2"/></list></property>
</bean>
1.2 Set 集合注入
<bean id="person" class="com.example.Person"><property name="hobbies"><set><value>Reading</value><value>Swimming</value><value>Traveling</value></set></property>
</bean>
在这个例子中,Person 类的 hobbies 属性是一个 Set 集合,Spring 会将多个 value 元素注入到 Set 集合中,确保元素的唯一性。
1.3 Map 集合注入
<bean id="person" class="com.example.Person"><property name="contactInfo"><map><entry key="email" value="person@example.com"/><entry key="phone" value="123-456-7890"/></map></property>
</bean>
在这个例子中,Person 类中的 contactInfo 属性是一个 Map,将 email 和 phone 键值对注入到 Map 中。