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 ...
随机推荐
- [Deep-Learning-with-Python]GAN图片生成
GAN 由Goodfellow等人于2014年引入的生成对抗网络(GAN)是用于学习图像潜在空间的VAE的替代方案.它们通过强制生成的图像在统计上几乎与真实图像几乎无法区分,从而能够生成相当逼真的合成 ...
- Django后端彻底解决跨域问题
最近在接一个前后端分离的项目,后端使用的django-restframework,前端使用的Vue.后端跑起来后,发现前端在访问后端API时出了了跨域的问题. 类似如下报错: 关于跨域问题,之前这篇文 ...
- Linux服务器更换主板后,网卡识别失败的处理方法
1)现象说明公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重 ...
- Linux系统下本地yum镜像源环境部署-完整记录
之前介绍了Linux环境下本地yum源配置方法,不过这个是最简单最基础的配置,在yum安装的时候可能有些软件包不够齐全,下面说下完整yun镜像源系统环境部署记录(yum源更新脚本下载地址:https: ...
- Jquery画折线图、柱状图、饼图
1.今天做了一个折线图,首先需要导js文件.这里有一个demo:http://files.cnblogs.com/files/feifeishi/jquery_zhexiantubingtuzhuzh ...
- 团队作业:SRS文档-飞机大战
本实验为团队合作项目作业的一部分:SRS文档-飞机大战 项目分工:SRS文档项目为梁JM负责完成 实验要求: 3.SRS文档(第二周,截止5月31日) 要求对所选项目进行用例 ...
- nginx gzip 以及 tcp 反向代理的 model
同事为了提高性能发给我一model 简单改了一下. 记录一下 #user nobody; worker_processes ; events { worker_connections ; } http ...
- zlib 简单封装
下列代码用于压缩和解压字符串,使用标准库string.实现了对zlib的简单封装. #pragma once #include <boost/noncopyable.hpp> #inclu ...
- 远程连接db2数据库
在db2数据库中,需要理解catalog(编目)这个概念,理解前先说下db2数据库的体系结构:由系统(节点)也就是主机,下面是实例,实例下面是数据库,然后是表空间,再是数据库对象.现在假设你有一个数据 ...
- Personal Software Process (PSP)
日期 分类 开始时间 结束时间 中断时间 净时间 活动 备注 C U 2016/03/15 随笔 9:30 10:40 0 70 博客更新 更新<软件项目管理(1)> Y Minute 随 ...