欢迎大家关注我的微信公众号,共同交流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的生命周期
  1. Spring实例化Bean
  2. Spring将值和Bean的引用注入到Bean对应属性中
  3. 如果Bean实现了BeanNameAware接口,Spring将Bean的id传给setBeanName()方法
  4. 如果Bean实现了BeanFactoryAware接口,Spring调用setBeanFactor()方法,将BeanFactory实例传入
  5. 如果Bean实现了ApplicationContextAware接口,Spring调用setApplicationContext()方法,将Bean所在的应用上下文传入
  6. 如果Bean实现了BeanPostProcessor接口,Spring调用postProcessBeforeInitialization()方法
  7. 如果Bean实现了InitializingBean接口或使用了init-method声明了初始化方法,Spring调用afterPropertiesSet()方法
  8. 如果Bean实现了BeanPostProcessor接口,Spring调用postProcessAfterInitialization()方法
  9. Bean初始化完毕,可以进行使用,其将一直在应用上下文中驻留,直到该应用上下文销毁
  10. 如果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简介的更多相关文章

  1. Spring实战读书笔记

    Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编 ...

  2. spring揭秘读书笔记----spring的ioc容器之BeanFactory

    spring的ioc容器是一种特殊的Ioc Service Provider(ioc服务提供者),如果把普通的ioc容器认为是工厂模式(其实很相似),那spring的ioc容器只是让这个工厂的功能更强 ...

  3. (转) Spring读书笔记-----Spring的Bean之配置依赖

    前一篇博客介绍了Spring中的Bean的基本概念和作用域(Spring读书笔记-----Spring的Bean之Bean的基本概念),现在介绍Spring Bean的基本配置. 从开始我们知道Jav ...

  4. 《Java并发编程实战》读书笔记一 -- 简介

    <Java并发编程实战>读书笔记一 -- 简介 并发的历史 并发的历史,也是人类利用有限的资源去提高生产效率的一个的例子. 设想现在有台计算机,这台计算机具有以下的资源: 单核CPU一个 ...

  5. <<Java RESTful Web Service实战>> 读书笔记

    <<Java RESTful Web Service实战>> 读书笔记 第一章   JAX-RS2.0入门 REST (Representational State ransf ...

  6. iPhone与iPad开发实战读书笔记

    iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...

  7. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  8. 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...

  9. 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...

  10. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

随机推荐

  1. Python3列表(list)比较操作教程

    一.相等比较 1.1 同顺序列表比较 顺序相同直接用“==”进行比较即可 list1 = ["one","two","three"] lis ...

  2. BATJ面试指南

    Java并发编程面试题汇总 线程 线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进程所创建的对象资源(内存资源).java.lang.Thre ...

  3. js 调用后台,后台调用js

    <html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat=" ...

  4. QT + OpenCV + MinGW 在windows下配置开发环境

           由于研究项目需要,最近开始接触C++界面设计,关于“QT + OpenCV + MinGW在windows下配置开发环境”着实让人头疼,单次配置时间相当长,也十分不容易,本人第一次配置成 ...

  5. GetLastError 错误返回码

    (0)-操作成功完成.(1)-功能错误.(2)- 系统找不到指定的文件.(3)-系统找不到指定的路径.(4)-系统无法打开文件.(5)-拒绝访问.(6)-句柄无 效.(7)-存储控制块被损坏.(8)- ...

  6. Rhino学习教程——1.3

    在主工具栏的工作视窗配置一栏中,有一个背景图工具. 展开是: . 功能是: 放置背景图 移除背景图 移动背景图 缩放背景图 对齐背景图 隐藏背景图/显示背景图 用“图框平面”工具  也可以导入一个图片 ...

  7. 1.2 JAVA多线程实现

    线程和进程 进程:是执行中一段程序, 进程是系统进行资源分配和调度的一个独立单位. 线程:比进程更小的能独立运行的基本单位,单个进程中执行中每个任务就是一个线程.线程是进程中执行运算的最小单位. Th ...

  8. Centos 安装dhcp及简单配置

    install yum -y install dhcp file /etc/dhcp/dhcpd.conf eg:-------------------------------- ddns-updat ...

  9. java入门-day02

    变量和数据类型 Java是强类型语言.数据在计算之前一定要有确定的类型 基本数据类型;   byte /short /int /long/(分别占1-4字节) float(4字节,精度6-7位)    ...

  10. ORACLE数据库管理员的职责

    ORACLE数据库管理员的职责 一.概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情 ...