Traditional-Frame
- ssh = spring + struts + hibernate
- ssm = spring + springmvc + MyBatis
全家桶
- 脚手架框架: springboot
- 微服务框架: springCloud
简介
- Spring 是分层的full-stack(全栈)轻量级的框架, 以IOC和AOP为外围, 提供展示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 : 很不便的进行单元测试
核心思想
IOC
- Inversion of control (管制反转)
-- 形容的事件: Java开发畛域对象的创立, 治理的问题
-- 传统开发方式: 通过new对象来实现
-- IOC思维开发方式: 咱们不须要本人去new对象, 而是从IOC容器去帮忙咱们实例化对象并且治理它, 咱们须要那个对象, 去问IOC容器拿就能够了
- resolve question : 对象之间的耦合问题
- IOC和DI的区别
-- 形容的是同一件事件, 只是角度不一样.
-- IOC是站在对象的角度, 对象实例化的权力都交给了容器
-- DI是站在容器的角度, 容器会将对象依赖的其余对象注入
AOP
- Aspect Oriented Programming :
-- AOP是OOP的连续; OOP的三大特色: 封装、继承和多态, OOP是一种垂直继承体系, 所以不能解决切面编程问题
-- 切面编程: 切指的是横切逻辑, 面指的是受横切逻辑影响的多个办法 - resolve question : 在不扭转原有业务逻辑的状况下, 加强横切逻辑代码, 基本上解耦合.