《Spring实战》读书笔记——Spring简介
欢迎大家关注我的微信公众号,共同交流Java相关技术!

使用Spring的目的
Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。
Spring如何降低Java开发的复杂性
- 最小侵入编程
- 通过面向接口和依赖注入实现松耦合
- 基于编程惯例和切面进行声明式编程
- 通过模板减少样板式代码
Spring容器
在Spring应用中,不再由对象自行创建或管理它们之间的依赖关系;Spring容器负责创建对象、装配对象、配置它们并管理它们的整个生命周期。
容器是Spring框架的核心,是依赖注入和切面的基础,其自带了多个容器实现,这多个实现可以归类为两种不同的类型:
- Bean工厂,提供基本的依赖注入支持
- ApplicationContext,基于Bean工厂构建,提供应用框架级别的服务
ApplicationContext在实际的应用中更广泛、更受欢迎。
应用上下文
Spring自带了多种类型的应用上下文,其中最常用的几种为:
- AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring上下文
- AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文
- ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载Spring上下文
- FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载Spring上下文
- XmlWebApplicationContext:从Web应用下的一个或多个xml配置文件中加载Spring上下文
Bean的生命周期
- Spring实例化Bean
- Spring将值和Bean的引用注入到Bean对应属性中
- 如果Bean实现了BeanNameAware接口,Spring将Bean的id传给setBeanName()方法
- 如果Bean实现了BeanFactoryAware接口,Spring调用setBeanFactor()方法,将BeanFactory实例传入
- 如果Bean实现了ApplicationContextAware接口,Spring调用setApplicationContext()方法,将Bean所在的应用上下文传入
- 如果Bean实现了BeanPostProcessor接口,Spring调用postProcessBeforeInitialization()方法
- 如果Bean实现了InitializingBean接口或使用了init-method声明了初始化方法,Spring调用afterPropertiesSet()方法
- 如果Bean实现了BeanPostProcessor接口,Spring调用postProcessAfterInitialization()方法
- Bean初始化完毕,可以进行使用,其将一直在应用上下文中驻留,直到该应用上下文销毁
- 如果Bean实现了DesposableBean接口或使用了destroy-method声明了销毁方法,Spring将调用destroy()方法
Spring核心模块
Spring的模块依据其所属的功能可以划分为6类。
Spring核心容器
- core:Spring核心
- context:Spring容器
- beans:Spring的Bean工厂
- expression:Spring表达式语言
- context-support:Spring容器辅助支撑
Spring AOP
- aop:面向切面编程
- aspectJ:切面注解相关
数据访问与集成
- JDBC:数据库访问相关
- JMS:消息相关
- ORM:对象关系映射模型相关
- OXM:XML映射模型相关
- transaction:事务相关
- Messaging:消息服务相关
Web与远程调用
- Web MVC:Spring提供的MVC框架
- Web Servlet:Servlet相关
- WebSocket:Socket编程相关
Instrumentation
使用场景有限,暂时不需要了解
Test
Spring提供的测试框架
总结
本文从总的方向上对Spring相关的内容进行了介绍,并不涉及任何细节的东西。主要涉及Spring的优势、Spring容器、Spring应用上下文、Spring生命周期、Spring项目的模块化。在接下来的文章中,将会通过示例的方式展示Spring每一项功能的使用。
《Spring实战》读书笔记——Spring简介的更多相关文章
- Spring实战读书笔记
Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编 ...
- spring揭秘读书笔记----spring的ioc容器之BeanFactory
spring的ioc容器是一种特殊的Ioc Service Provider(ioc服务提供者),如果把普通的ioc容器认为是工厂模式(其实很相似),那spring的ioc容器只是让这个工厂的功能更强 ...
- (转) Spring读书笔记-----Spring的Bean之配置依赖
前一篇博客介绍了Spring中的Bean的基本概念和作用域(Spring读书笔记-----Spring的Bean之Bean的基本概念),现在介绍Spring Bean的基本配置. 从开始我们知道Jav ...
- 《Java并发编程实战》读书笔记一 -- 简介
<Java并发编程实战>读书笔记一 -- 简介 并发的历史 并发的历史,也是人类利用有限的资源去提高生产效率的一个的例子. 设想现在有台计算机,这台计算机具有以下的资源: 单核CPU一个 ...
- <<Java RESTful Web Service实战>> 读书笔记
<<Java RESTful Web Service实战>> 读书笔记 第一章 JAX-RS2.0入门 REST (Representational State ransf ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
随机推荐
- windows下Xshell远程访问虚拟机
下载Xshell 5软件在windows下安装 安装好后Xshell 5启动软件 下一步,检查虚拟机,配置是否正确 下一步,设置网络,保障虚拟机系统能够连接网络 下一步,进入虚拟机系统,检查虚拟机网络 ...
- MyCat配置运行
昨天把mycat的环境搭建差不多了,今天直接上配置文件: 主要需要修改三个配置文件: rule.xml schema.xml server.xml rule.xml配置如图: <?xml ver ...
- MVP之高级MVP架构封装
MVP之高级MVP架构封装 No MVP: 我们一般会这样写: public class MainActivity extends AppCompatActivity { private EditTe ...
- Android Studio之SVN打分支、切换分支及合并分支
1.打分支: 右击项目--Subversion--Branch or Tag 点击OK,分支就创建成功了,接下来我们切换到分支v2 2.切换分支: 右击项目--Subversion--Update D ...
- 安装easydict
在运行lightheadrcnn做test时,提示缺少easydict 不知道什么原因,用pip install easydict或者conda install easydict都没有用,不能安装ea ...
- Oracle 11g 测试ogg中断之后,重新同步操作
测试ogg中断之后,重新同步操作 2018-06-07 17:11 779 1 原创 GoldenGate 本文链接:https://www.cndba.cn/leo1990/article/2839 ...
- crt证书iis 中引用 程序目录提示 System.UnauthorizedAccessException:拒绝访问
在站点根目录添加 Authenticated Users 权限
- Binary Search 二分法方法总结
Binary Search 二分法方法总结 code教你做人:二分法核心思想是把一个大的问题拆成若干个小问题,最重要的是去掉一半或者选择一半. 二分法模板: public int BinarySear ...
- Linux集群架构(一)
第二十八课 Linux集群架构(一) 目录 一. 集群介绍 二. keepalived介绍 三. 用keepalived配置高可用集群 四. 负载均衡集群介绍 五. LVS介绍 六. LVS调度算法 ...
- 初读"Thinking in Java"读书笔记之第八章 --- 多态
再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ...