Spring 概述

一、Spring 优点

  • Spring 是开源轻量级框架
  • Spring IOC 方便解耦,简化开发维护
  • Spring AOP 支持面向切面编程
  • 声明式事物管理
  • 方便集成各种优秀框架
  • Spring 是一站式框架
    • Web:SpringMVC
    • Service:Spring
    • DAO:Spring 的 jdbcTemplate

二、Spring 体系结构

这里写图片描述

三、Spring 核心思想

  • IOC:控制反转,把对象的创建交由Spring来实现,程序本身不再关注对象的创建,降低程序的耦合度。也可以说把new Object()的这种工作从程序员手中解放出来,交由Spring在合适的时机创建对象,而程序员只要关注业务逻辑的实现就可以了。就比如我饿了,想吃饭,一种办法是自己去做饭(包括买菜啊,洗菜啊,收拾啊。。);另一种是去饭店,什么也不用管,直接就可以吃(当然这不是免费的哈哈!),我与卖菜人的这些没有直接的联系了,全部都交由饭店来处理,至于他们之间是什么关系,我不用去关注,我只关心饭是否好吃就可以了。像这种,我们把这种与“他人”关联的东西托管出去,交给“饭店”统一管理,就像我们在程序中处处new出来的对象,交由Spring IoC容器去管理,降低了程序之间的耦合性,利于开发和维护。

  • Spring IOC 的实现方式(详见 Spring IoC 实现方式)

    • 主要应用了 dom4j + 工厂模式 + 反射 技术
  • DI:依赖注入向类里面的属性设置值,需要什么注入什么。

  • IoC 与 DI 的关系:个人认为 DI 更像是 IoC的实现方式,就像类实现了接口一样(虽然这样有点牵强),DI 不能单独存在,需要在IoC的基础之上来进行。

  • AOP:面向切面编程,可以说是OOP(面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。例如日志功能,日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。把这种散布在各处的代码封装到一个可重用模块,我们将这个可重用模块命名为“切面”,所谓“切面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,有利于未来的可操作性和可维护性。
    使用“横切”技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。正如Avanade公司的高级方案构架师Adam Magee所说,AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离”。

  • Spring AOP 的实现方式(详见 Spring AOP 实现方式)

    • 采用动态代理技术(有接口的采用JDK动态代理技术,没接口的采用CGLIB动态代理技术,CGLIB思想是代理目标类的子类对象来调用父类方法并装饰),利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;
    • 采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值