Bean和Spirng模块
容纳Bean
在Spring中,应用对象生存于Spring容器中,如图所示,Spring容器可以创建、装载、配置这些Bean,并且可以管理它们的生命周期。
Spring的容器实现
- Bean工厂(
org.springframework.beans.factory.BeanFactory
):最简单的容器,提供基本的DI支持; - 应用上下文(
org.springframework.context.ApplicationContext
):基于BeanFactory之上构建,提供面向应用的服务。
常用的几种应用上下文
- ClassPathXmlApplicationContext:从类路径中的XML配置文件加载上下文,会在所有的类路径(包括jar文件)下查找;
- 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实现了
InitializationBean
接口,Spring将调用afterPropertiesSet()
方法。类似的如果Bean使用了init-method
声明了初始化方法,该方法也会被调用;如果Bean实现了
BeanPostProcessor
接口,Spring将调用ProcessAfterInitialization()
方法;此时此刻,Bean已经准备就绪,可以被应用程序使用了,它们将一直
驻留在应用上下文中
,直到该应用上下文被销毁;如果Bean实现了
DisposableBean
接口,Spring将调用destory()
方法,同样的,如果Bean中使用了destroy-method
声明了销毁方法,也会调用该方法;
Spring模块
核心Spring容器
容器是Spring框架最核心的部分,它负责Spring应用中Bean的创建、配置和管理。Spring模块都构建与核心容器之上,当配置应用时,其实都隐式地使用了相关的核心容器类。另外,该模块还提供了许多企业级服务,如邮件、JNDI访问、EJB集成和调度等。
AOP
AOP是Spring应用系统开发切面的基础,与依赖注入一样,可以帮助应用对象解耦
。借助于AOP,可以将遍布于应用的关注点(如事务和安全等)从所应用的对象中解耦出来。
数据访问与集成
Spring的JDBC和DAO模块封装了大量的样板代码,这样可以使得在数据库代码变得简洁,也可以更专注于我们的业务,还可以避免数据库资源释放失败而引发的问题。另外,Spring AOP为数据访问提供了事务管理服务。同时,Spring还与流程的ORM(Object-Relational Mapping)进行了集成,如Hibernate、MyBatis等。
Web和远程调用
Spring提供了两种Web层框架:面向传统Web应用的基于Servlet的框架和面向使用Java Portlet API的基于Portlet的应用。Spring远程调用服务集成了RMI、Hessian、Burlap、JAX-WS等。
测试
Spring提供了测试模块来测试Spring应用。
最新文章
- 数据结构(c语言第2版)-----了解链表,栈,队列,串
- CALayer anchorPoint 锚点始终为(0,0)
- 关于web软件信息安全问题防护资料的整理(三)
- iOS-H5学习篇-01
- HP SAN Switch光纖交換機命令行畫zone
- iOS - AVPlayer 音视频播放
- hdu3033(变形分组背包)
- ZenCoding for EmEditor Snippets 的安装
- HTML的基本结构与标签的初步了解
- 全面解析for循环
- PHP中域名绑定
- spring boot 系列之四:spring boot 整合JPA
- Redis 4.0新功能介绍
- 使用User Primary Email作为GUID的问题
- C++类的描述
- mfc 中的error RC2104 : undefined keyword or key name
- elasticsearch6.3.1 安装以及配置IK 使用
- clion配置c/c++环境
- python qq邮箱发送邮件
- matlab中画系统零极点的方法