Traditional-Frame

  • ssh = spring + struts + hibernate
  • ssm = spring + springmvc + MyBatis

全家桶

  • 脚手架框架: springboot
  • 微服务框架: springCloud

简介

  • Spring 是分层的full-stack(全栈)轻量级的框架,IOCAOP为核心, 提供展现Spring mvc 和业务层事务管理等众多企业级应用技术, 还能整合世界众多优秀开源的第三方框架和类库, 已经成为了众多企业应用开发框架.
  • https://spring.io

优势

  • 解耦合, 简化开发(IOC与DI)
  • AOP编程的支持(面向切面编程)
  • 声明式事物的支持(@Transnational)
  • 方便程序的测试(@Junit)
  • 方便集成各种优秀框架(@Mybatis @Lambook @Redis … )
  • 降低了使用难度(注解的使用简化开发)
  • 源码是经典的java学习范例

核心架构

  • Spring核心容器(Core container) : 包含了spring应用中Bean的创建、配置和管理. 在该模块中, 包括了spring bean factory, 为spring提供了DI的功能. 基于bean工厂, 我们还会发现多种spring应用上下文的实现.
  • 面向切面编程(AOP) /Aspects spring : 对面向切面编程提供了丰富的支持. 这个模块是spring应用系统中开发切面的基础, 与DI一样, AOP可以帮助对象解耦.
  • 数据访问与集成 (Data Access/ integration) : 集成了大量JDBC和DAO样板代码, 使得数据库代码变得简洁. 也可以更专注于我们的业务, 还可以避免数据库资源释放失败而引起的问题.
  • web : 提供了SpringMVC框架给Web应用, 还提供了多种构建和其他应用交互的远程调用方案
  • Test : 很方便的进行单元测试
    Data Accessintegration.png

核心思想

IOC

  • Inversion of control (控制反转) 
    -- 描述的事情: Java开发领域对象的创建, 管理的问题
    -- 传统开发方式: 通过new对象来实现
    -- IOC思想开发方式: 我们不需要自己去new对象, 而是从IOC容器去帮助我们实例化对象并且管理它, 我们需要那个对象, 去问IOC容器拿就可以了

没有1OC容器的情况下.png

  • resolve question : 对象之间的耦合问题
  • IOC和DI的区别
    -- 描述的是同一件事情, 只是角度不一样.
    -- IOC是站在对象的角度, 对象实例化的权利都交给了容器
    -- DI是站在容器的角度, 容器会将对象依赖的其他对象注入

OC容器.png

AOP

  • Aspect Oriented Programming :
    -- AOP是OOP的延续; OOP的三大特征: 封装、继承和多态, OOP是一种垂直继承体系, 所以不能解决切面编程问题
    -- 切面编程: 切指的是横切逻辑, 面指的是受横切逻辑影响的多个方法
  • resolve question : 在不改变原有业务逻辑的情况下, 增强横切逻辑代码, 根本上解耦合.

推荐阅读

spring-IOC-2...
https://segmentfault.com/a/11...

注解持续更新中...
https://segmentfault.com/a/11...

代码参考地址...
https://github.com/sumcolin/s...


Joeyxx7000
0 声望0 粉丝