框架
不明组织帮助提前定义好的一些类或接口,我们在这些类或接口的基础上来实现某个问题的解决方案,用以简化开发过程,提高开发效率。
spring
spring是一个(轻量级)的java开发框架,目的是为了解决开发时业务层和其他层之间的耦合问题,spring负责基础架构,让人专注于应用程序的开发。
最主要的任务:解决企业级应用开发的复杂性即简化java开发
IOC:控制反转
IOC是一种设计思想,在java开发中,将你设计好的对象交给容器控制,而不是显示的用代码进行对象的创建。简单来讲:对象由spring来创建,管理,装配 。
两个原则:
1、接口分离原则ISP(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
例:不要把鼠标(具体实现)直接焊在主板上,而是使用插口(抽象)连接;
2、依赖倒置原则DIP(the Dependency Inversion Principle DIP)
具体实现依赖抽象,下层依赖上层。
例:正转:主板—焊接—>鼠标 没有鼠标无法启动电脑
反转:电脑<—依赖—鼠标 引入DI实现IOC
IOC是DIP的设计原理,DI是IOC的具体实现,鼠标坏了可以直接换一个,会短暂无法使用,但涉及变更少
优点:
(1)集中管理
(2)功能复用
(3)解耦
(4)使得体系结构可维护性,灵活性,扩展性变高
AOP:面向切面编程
容器:包含并管理应用对象的生命周期
spring 优点
1、spring通过DI、AOP和消除样板式代码来简化企业级Java开发
2、spring所在的庞大生态圈,可将spring扩展到不同领域(Web服务、REST、移动开发、以及NoSQL)
3、低侵入式的设计,代码污染极低
4、独立于各种应用服务器
5、spring的ioc容器降低了业务对象替换的复杂性,提高组件之间的解耦
6、spring的aop支持允许将一些通用任务如安全、事务、日志等进行集中式处理,提供更好的服用
7、spring的高度开发性,并不强制应用完全依赖spring,开发者可自由选择Spring框架的部分或全部
8、spring的orm和dao提供与第三方持久层框架的良好整合,简化数据库访问
(T:XY)