您的位置:首页 > 编程语言 > Java开发

Spring实战3-Spring之旅

2015-06-07 11:34 357 查看
Spring的目的是降低java开发的复杂性,具体采用四中策略:





基于POJO的轻量级和最小侵入性编程

通过依赖注入和面向接口实现松耦合

基于切面和惯例进行声明式编程

通过切面和模板减少样板式代码


创建应用组件之间协作的行为通常称为装配。用XML配置或者声明配置。

Spring通过应用上下文装载Bean的定义并把它们组装起来,该上下文全权负责对象的创建和组装。

依赖注入让相互写作的软件组件保持松散耦合,而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件。如日志、事务管理和安全此类的系统服务。这些服务经常融入到有自身核心业务逻辑的组件中去,故它们通常称为横切关注点,因为它们总是跨越系统的多个组件。AOP可以使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。结果是这些组件具有更高内聚性以及更加关注自身业务,完全不需要了解更能涉及的系统服务的复杂性。





Spring容器创建对象,装配它们,管理它们的整个生命周期,从创建到销毁。容器时Spring框架的核心,Spring容器使用依赖注入管理构成应用的组件,它会创建相互协作的组件之间的关联。

Spring自带了几种容器实现,可以归为两种不同的类型:1)Bean工厂(BeanFactory接口定义)是最简单的容器,提供基本的DI支持。2)应用上下文(ApplicationContext接口定义)基于BeanFactory之上构建,并提供面向应用的服务。

Spring常用的应用上下文


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

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

XmlWebApplicationContext-读取Web应用下的XML配置文件并加载上下文定义


Bean的生命周期






Spring对Bean进行实例化

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

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

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

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

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

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

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

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

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



Spring架构图--摘自Spring 4


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: