Spring In Action 学习笔记(一)

个人学习Spring In Action学习笔记系列 (一)

源码地址 https://github.com/spring-projects/spring-framework


U1 开始Spring之旅

1.1什么是Spring

Spring是一个开源框架,为简化企业级应用开发应运而生。Spring是一个轻量级的DI和AOP容器框架

  • 轻量级 基于POJO可以打成一个2.5MB的JAR包,非侵入式
  • 依赖注入 提供一种松耦合的技术,称为依赖注入(DI) Dependency Injection.对象是被动接收依赖类而部署自己主动去找。可以将DI理解为JNDI的反转--对象不是从容器中查找他的依赖类,而是容器在实例化对象的时候主动将他的依赖类注入给他
  • 面向切面 将业务逻辑从应用服务中分离出来,实现了内聚开发。如提供了系统中日志和事务支持
  • 容器 Spring是一个容器,包含并且管理应用对象的生命周期和配置
  • 框架 使用了简单的组件配置组合成一个复杂的应用

核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能

各个模块内容见 https://blog.csdn.net/panjianlongWUHAN/article/details/86301251

此处不再详述

 

1.3 理解依赖注入

Spring框架的核心是DI Dependency Injection

依赖注入通常被称为反向控制

骑士问题举例

使用接口耦合

减少耦合的一个通常的做法是将具体的实现隐藏在接口下面,这样具体实现类的替换不会影响到引用类

先写一个探险接口

HolyGrailQuest来实现这个接口

同样要添加Knight骑士接口

圆桌骑士实现骑士

但是该类只能获得特殊的一类探险 HolyGrailQuest

问题 是应该让骑士自己获得探险任务还是应该给予骑士他要从事的任务?

骑士得到他的探险任务是不同的,他只知道Quest接口,你可以按需给他任何一种Quest实现

1.4 应用AOP

AOP经常被定义成一种编程技术,用来在软件系统中提升业务的分离。有一些组件负责核心功能外的附带功能,比如日志,事务管理和安全,通常叫做交叉业务

AOP帮助我们将这些服务模块化,并把它们声明式地应用在需要它们的地方,这些组件更加专注于自身业务。

把切面想象成一个覆盖层,使用各个功能层来覆盖核心业务层。

AOP使用举例

每个骑士需要一个吟游诗人陪伴,用歌曲记载骑士的行动和功绩

出现一个问题,每个骑士在探险前,必须停下来吩咐诗人谱曲,探险后需要记得告诉诗人歌颂,耽误了骑士探险,造成了耦合

理想状态下,歌手应该不等通知就谱写曲子。 吟游诗人提供的的服务超出了骑士的责任,两者产生了交叉。所以把吟游诗人实现成切面,并把他的写歌服务提供给骑士是合理的。骑士甚至不需要知道诗人在旁边

使用XML编织切面

骑士不再需要告诉诗人来歌颂其探险,作为一个切面,诗人自动处理歌颂事务

KnightOfTheRoundTable恢复到一个更简单的形式

依赖注入和AOP是Spring中所有事情的核心

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值