Spring IOC
文章目录
应用架构
单一应用架构
当网站流量很小时,只要一个应用,将所有功能都部署在一起,以减少部署节点和成本,此时,用于简化增删改查工作量的数据访问框架ORM是关键
垂直应用架构
当访问量逐渐增大,单一应用增加机器来的加速度越来越小,提升效率的方法之一是将应用拆成相互不干扰的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时用于提高机器利用率的资源调度和治理中心(SOA)是关键
概述
Spring是一个轻量级Java开发框架,最早有RodJohnson创建,目的是为了解决企业及应用开发的业务逻辑层和其他各层之间的耦合问题。他是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。
Spring最根本的使命是**解决企业级应用开发的复杂性,即简化开发**
Spring可以做很多事情,它为企业级开发提供了丰富的功能,但是这些功能的底层都依赖于它亮哥核心特性,也就是**依赖注入(dependency injection)和面向切片变成(ascpect-oriented programming AOP)**
核心解释
- 轻量级开源框架
- 为了解决企业级应用开发的业务逻辑和其他层的耦合问题
- 是一个IOC和AOP的容器框架
- IOC:控制反转
- AOP:面向切片编程
- 容器:包含并管理应用对象的生命周期
使用spring的优点
- Spring通过DI、AOP和消除样板式代码来简化企业级Java开发
- Spirng框架之外还存在一个构建在核心之上的庞大生态圈,它将spring扩展到不同的领域,如Web服务、Rest、移动开发以及NoSQL
- 低侵入式设计,代码的污染极低
- 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere
- Spring的IoC容器降低了业务对戏那个替换的复杂性,提高了组件之间的解偶
- Spring的AOP支持允许讲一些通用任务和安全、事务、日志等进行集中式处理,从而提供了更好的复用
- Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
- Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选择Spring框架的部分或全部
- 任何一个语言或者任何一个框架想要立于不败之地,那么很重要的就是它的生态
核心组件
IOC 控制反转
IOC是一种设计思想,在java开发中,将你设计好的对象交给容器控制,而不是显式的用代码进行对象的创建
把创建和查找以来对象的控制权交给IoC容器,由IoC容器进行注入、组合对象之间的关系。这样对象与对象之间是松耦合、功能可复用(减少对象的创建和内存消耗),使得程序的整个体系结构可维护性、灵活性、扩展性变高。所谓IOC,就简短一句话:对象由Spring来创建、管理、装配
补充 面向对象五大原则
1.接口分离原则ISP(the Interface Segregation Principle ISP)
模块间要痛过抽象接口隔离开,而不是通过具体的类强耦合起来
2.依赖倒置原则DIP(the Dependency Inversion Principle DIP)
具体实现以来抽象,下层依赖上层。
依赖倒置原则使鼠标、键盘和电脑成为独立的互不干扰的对象,当电脑(上层)没有鼠标可以正常启动但是鼠标(下层)没有电脑则一无是处,控制权就被反转了(IOC),所以鼠标需要依赖USB(DI)才能使用