当前位置: 首页 > news >正文

Spring实战 读书笔记 1.Spring之旅

1.引言

2.关于本书

3.依赖注入和应用切面

4.容纳你的bean

5.spring各个版本的特性

 

1.引言

如上篇博客所述,打算从Spring作为学习java的切入点,那我们开始吧。

 

2.关于本书

本书分为4个部分:

2.1 第1部分 介绍Spring容器,以及Spring框架的核心 依赖注入和面向切面编程

2.2 第2部分 如何使用Spring来构建web应用程序

2.3 第3部分 关注如何处理和持久化数据

2.4 最后一部分 介绍如何将Spring应用程序与其他系统进行集成

 

3.依赖注入和应用切面

3.1 装配的概念

创建应用组件之间协作的行为通常称为装配(wiring)。

 

3.2 介绍了Spring装配bean的两种方式

3.2.1 基于xml的配置

3.2.2 基于java的配置

 

3.3 如何装配bean的

Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。

Spring应用上下文全权负责对象的创建和组装。

Spring自带多种应用上下文的实现,它们之间的主要区别在于如何装载配置

 

3.4.DI和AOP的好处

DI能够让相互协作的软件组件保持松散耦合

AOP允许你把遍布应用各处的功能分离出来形成可重用的组件,从而使应用具有更高的内聚性并且更加关注自身的业务

详见:

浅谈IOC

也说AOP

 

4.容纳你的bean

4.1 Spring容器

Spring容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期。

Spring容器归为两种类型:

bean工厂(由org.springframework.beans.factory.BeanFactory接口定义),提供基本的DI支持

应用上下文(由org.springframework.context.ApplicationContext接口定义),基于BeanFactory创建,并提供应用框架级别的服务

 

4.2 Spring自带的常用应用上下

  • AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载Spring应用上下文
  • AnnotationConfigWebApplicationContext:从一个或多个基于java的配置类中加载Spring Web应用上下文
  • ClassPathXmlApplicationContext:从类路径下的从一个或多个xml配置文件中加载上下文定义,把应用上下文的定义文件作为类资源
  • FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义
  • XmlWebApplicationContext:从web应用下的一个或多个xml配置文件中加载上下文定义

4.3 bean的生命周期

  1. Spring对bean进行实例化
  2. Spring将值和bean的引用注入到bean对应的属性中
  3. 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法
  4. 如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入
  5. 如果bean实现了ApplicationContextAware接口,Spring将调用SetApplicationContext()方法,将bean所在的应用上下文的应用传入进来
  6. 如果bean实现了beanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法
  7. 如果bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()方法,类似的,如果bean使用init-method声明初始化方法,该方法也会被调用
  8. 如果bean实现了BeanPostProcessor接口,Spring将调用它们的PostProcessAfterInitialization()方法
  9. 此时,bean已经准备就绪了,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到应用上下文被销毁
  10. 如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口犯法,同样,如果bean使用了destroymethod声明了销毁方法,该方法也会被调用

5. spring各个版本的特性

这里暂时只记录我接触的一些内容

Spring 3.2中

RestTemplate和@RestMapping可以支持HTTP PATCH方法;

@Autowired,@Value和@Bean注解能够作为元注解,用于创建自定义的注入和bean声明注解;

 

源码地址:https://github.com/jdzhang1221/SpringInAction4

 

转载于:https://www.cnblogs.com/jdzhang/p/11186634.html

相关文章:

  • 信号的分解
  • Python学习教程:给定一个字符串,逐个翻转字符串中的每个单词
  • 相关函数
  • Vue_cli 打包报错
  • 各种数学符号
  • C# 如何异步查询数据库
  • unity崩溃日志目录
  • Java蓝桥杯——排列组合
  • 经典bug集锦
  • javassit(1) 基础概念
  • unity中Playable的使用
  • 设计已死?
  • 镜花缘——李汝珍著
  • 破译肢体语言密码——王邈著
  • 探寻胡适的精神世界——欧阳哲生著
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CentOS 7 修改主机名
  • create-react-app做的留言板
  • JSONP原理
  • JS题目及答案整理
  • log4j2输出到kafka
  • Node项目之评分系统(二)- 数据库设计
  • Octave 入门
  • php ci框架整合银盛支付
  • Python_网络编程
  • React Native移动开发实战-3-实现页面间的数据传递
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Selenium实战教程系列(二)---元素定位
  • 创建一个Struts2项目maven 方式
  • 从PHP迁移至Golang - 基础篇
  • 当SetTimeout遇到了字符串
  • 机器学习 vs. 深度学习
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何编写一个可升级的智能合约
  • 微信小程序:实现悬浮返回和分享按钮
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #大学#套接字
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (02)vite环境变量配置
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (六)vue-router+UI组件库
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 指南:抽象化实现的基类
  • .NET/C# 的字符串暂存池