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应用。
Bean和Spirng模块的更多相关文章
- Android项目中的各个模块框架设计
作为Android开发,现对项目开发中的各个模块搭建,梳理如下: Android UI框架,开发人员需要达到专家级 网络框架 浏览框架 图片加载框架 图片裁剪压缩工具类 客户端并发框架 线程池设计 ( ...
- 34 springboot项目之间依赖导致bean 无法加载问题
方式一(OK) 模块A引入模块B ,但是模块B的bean一直注入不进来 原因: A模块的Application是在com.xx.xx包下,那么势必只能扫描到这个包下的bean, B模块的Applica ...
- 【框架】利用Spring的BeanPostProcessor来修改bean属性
一.BeanPostProcessor是什么?什么时候触发?可以用来做什么? 1.它是什么? 首先它是一个接口,定义了两个方法: public interface BeanPostProcessor ...
- Spring框架模块
Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – I ...
- spring框架bean注入
今天学习了spring框架,刚刚入门简单的了解了spring并学习了bean的注入IOC:IOC(Inversion of Control,控制反转)不是什么技术,而是一种设计思想.它的目的是指导我们 ...
- Skywalking-13:Skywalking模块加载机制
模块加载机制 基本概述 Module 是 Skywalking 在 OAP 提供的一种管理功能特性的机制.通过 Module 机制,可以方便的定义模块,并且可以提供多种实现,在配置文件中任意选择实现. ...
- JPA和SpringData知识梳理
一. JPA,全称Java Persistence API,用于对象持久化的API,定义一套接口,来规范众多的ORM框架,所以它是在ORM框架之上的应用. 下面主要讲JPA在Hibernate基础上的 ...
- Spring MVC教程——检视阅读
Spring MVC教程--检视阅读 参考 Spring MVC教程--一点--蓝本 Spring MVC教程--c语言中午网--3.0版本太老了 Spring MVC教程--易百--4.0版本不是通 ...
- Spring IoC容器初始化过程学习
IoC容器是什么?IoC文英全称Inversion of Control,即控制反转,我么可以这么理解IoC容器: 把某些业务对象的的控制权交给一个平台或者框架来同一管理,这个同一管理的平台可以称为I ...
随机推荐
- [Oracle]如何查看 10046 trace 中的 tim= ... 的具体时刻
可以在 Linux 下,用下列方式: 如10046 trace 文件中如果有如下的内容:... tim = 1503032923 可以用 date 命令加 option 来看它的时刻: date - ...
- 暴雪《争霸艾泽拉斯》*采用自适应 SSAO
在实时渲染过程中,屏幕空间环境光遮蔽 (SSAO) 常用于打造小范围环境光效果和接触阴影效果.它用于许多现代游戏,通常占用 5% 到 10% 的帧时间.在<争霸艾泽拉斯>* 游戏开发过程中 ...
- linux下监控某个目录是否被更改
需求:对一个目录(比如/data/test)进行监控,当这个目录下文件或子目录出现变动(如修改.创建.删除.更名等操作)时,就发送邮件!针对上面的需求,编写shell脚本如下: [root@cento ...
- 作业20171116 beta2及beta发布 成绩
申诉 对成绩有疑问或不同意见的同学,请在群里[@杨贵福]. 申诉时间截止2017年12月13日 17:00. 成绩 scrum01 scrum02 scrum03 scrum04 scrum05 sc ...
- 第六周分析Linux内核创建一个新进程的过程
潘恒 原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 task_struct结构: ...
- Linux内核第五节 20135332武西垚
20135332武西垚 在MenuOS中通过添加代码增加自定义的系统调用命令 使用gdb跟踪调试内核 简单分析system_call代码了解系统调用在内核代码中的处理过程 由于本周实验是在Kali虚拟 ...
- 作业6-COSPLAY孩子他家长
为了我提高我女儿的数学能力,我以下我会根据我想要的功能做出相应的解决方案,为了孩子,父母也可以想的比老师周到.可怜天下父母心. 编号. 名称. ...
- JAVA中方法和变量在继承中的覆盖和隐藏
出处:http://renyanwei.iteye.com/blog/258304 我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际 ...
- JavaScript使用jsonp实现跨域
为什么要把ajax跨域写一下呢,因为ajax跨域并不是想跨就能跨的.因为为了安全,ajax是不允许跨域的. 举个例子,你有一个卖水果的网站,你的ajax请求另一个网站提供的图片,正常的时候,图片是一个 ...
- Docker查看容器IP
https://segmentfault.com/q/1010000001637726 https://blog.csdn.net/sannerlittle/article/details/77063 ...