Spring框架学习之二使用流程

我们知道了Spring的优点。那么该怎么使用Spring呢?

一.需要一个容器

 上帝需要观察人类的从生到死,所以上帝创造了世界。程序员关心对象的使用,所以程序员需要创建一个容器来创建对象,装配对象,配置它们,管理它们的生命周期(怎么感觉像是模拟人生~),从生存到死亡。


二.Bean工厂和应用上下文

下面我们来讨论下创世的,哦不,是创建容器的类型。一般可以分为两类:

1.Bean工厂

Bean factories由org.springframework.beans.facory.BeanFactory接口定义,是最简单的容器,提供基本的DI支持。但是相对于大多数应用都太低级了。所以一般使用应用上下文。

2.应用上下文

应用上下文由org.springframework.context.ApplicationContext接口定义,基于Bean工厂之上构建(没错,我们使用的是克隆人),并提供面向应用的服务。


三.应用上下文

一般用户最有可能遇到以下3种应用上下文:

ClassPathXmlApplicationContext——从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当作类资源。

FileSystemXmlapplicationcontext——读取文件系统下的XML配置文件并加载上下文定义。

XmlWebApplicationContext——读取Web应用下的XML配置文件并装载上下文定义。

使用FileSystemXmlapplicationcontext和使用ClassPathXmlApplicationContext的区别在于前者明确文件地址,后者是在所有的类路径(包括JAR文件下)查找文件。通过现有的应用上下文引用,你可以调用应用上下文的getBean()方法从Spring容器中获取Bean。


四.Bean的生命周期

下面我们来谈谈人道毁灭的周期性。哦,错了,是Bean的生命周期。

与传统的Java中Bean创建-使用-自动回收的过程不同。Spring容器中的Bean生命周期更细腻。每个过程都可以自定义自己的需求:

1.Spring对Bean进行实例化

2.Spring将值和Bean的引用注入进Bean对应的属性中。

3.如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()接口方法。

4.如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()接口方法,将BeanFactory容器实例传入。

5.如果Bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()接口方法,将应用的上下文的引用传入。

6.如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()接口方法。

7.如果Bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()接口方法。类似地,如果Bean使用init-method声明了初始化方法,该方法也会被调用。

8.如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()接口方法。

9.此时此刻,Bean已经准备就绪,可以背应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁。

10.如果Bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果Bean使用destroy-method声明了销毁方法,该方法也会被调用。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值