码迷,mamicode.com
首页 > 编程语言 > 详细

spring核心技术概要2

时间:2018-08-24 23:41:03      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:bst   ini   ima   XML   com   template   应用程序   系统路径   reg   


四、IOC 容器

技术分享图片

IOC 即控制反转,将对象的生命周期管理、关系依赖通过容器实现,实现解耦。

ApplicationContext是最关键的入口,其包括几种实现:

  1. FileSystemXmlApplicationContext,从 XML 文件中加载被定义的 bean对象,基于文件系统路径加载配置;

  2. ClassPathXmlApplicationContext,从 XML 文件中加载被定义的 bean对象,基于类路径加载配置;

  3. 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

标签:bst   ini   ima   XML   com   template   应用程序   系统路径   reg   

原文地址:https://www.cnblogs.com/littleatp/p/5807288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!