spring核心技术概要2
Posted littleatp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring核心技术概要2相关的知识,希望对你有一定的参考价值。
四、IOC 容器
IOC 即控制反转,将对象的生命周期管理、关系依赖通过容器实现,实现解耦。
ApplicationContext是最关键的入口,其包括几种实现:
-
FileSystemXmlApplicationContext,从 XML 文件中加载被定义的 bean对象,基于文件系统路径加载配置;
-
ClassPathXmlApplicationContext,从 XML 文件中加载被定义的 bean对象,基于类路径加载配置;
-
WebXmlApplicationContext,从 XML 文件中加载被定义的 bean对象,基于 web 应用程序范围加载配置;
五、Bean 管理
5.1 作用域
singleton
每一个 Spring IoC 容器中保持一个单一实例(默认)。
prototype
bean 的实例可为任意数量。
request
该作用域将 bean 的定义限制为 HTTP 请求。只在 web-aware Spring ApplicationContext 的上下文中有效。
session
该作用域将 bean 的定义限制为 HTTP 会话。 只在web-aware Spring ApplicationContext的上下文中有效。
global-session
该作用域将 bean 的定义限制为全局 HTTP 会话。只在 web-aware Spring ApplicationContext 的上下文中有效。
5.2 生命周期
Bean 的初始化及销毁对应 init 及 destroy 两个行为,可通过实现 InitializingBean/DisposableBean 接口观察对象的初始化及销毁时机。
代码片段:
public void afterPropertiesSet() throws Exception { System.out.println(this + "-- properties set"); } public void init() { System.out.println(this + "-- init"); } public void destroy() { System.out.println(this + "-- destroy"); }
为了使spring获得 destroy 行为的监视机会,需要注册JVM关闭回调:
context.registerShutdownHook();
init/destroy拦截
实现 BeanPostProcessor 接口,并注册到配置文件
<bean class="xxx.MyBeanPostProcessor" />
5.3 bean模板
通常可将一组属性归集为bean模板以实现复用
<!-- template --> <bean id="template" abstract="true"> <property name="support" value="true" /> <property name="count" value="10" /> </bean> <bean id="tplbean" class="org.springfoo.core.bean.TplBean" parent="template"> <property name="message" value="I‘m inheritted from template" /> </bean>
POJO 定义
public class TplBean { private String message; private boolean support; private Integer count; ...
以上是关于spring核心技术概要2的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段