一、IOC
假设有一个类A和一个接口B,A中需要用到B的实例化对象来实现功能。但因为B的实现方式不唯一,如果仅仅选择其中某种方法来实现接口B,可能会在后续的开发中产生不适用,从而不得不回来修改B的实现方式。而Ioc的出来就解决了这一困扰。
Ioc,即Inversion Of Control控制反转。传统的创建对象的方式使用new关键字来实例化一个对象,创建对象的主动权在程序员手中,但是在Spring中,对象实例化的操作交给Spring容器来负责,并通过依赖注入来完成,创建对象的主动权交给了Spring容器,所以称为控制反转。
IoC最大的好处是,因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了。
二、AOP
AOP,即 Aspect Oriented Program 面向切面编程。AOP与OOP相辅相成,提供了不同于OOP的软件抽象结构视角。在OOP中,将类最为编程的基本单元,而在AOP中则将切面作为编程的基本单元。
在AOP中,将软件的功能划分为核心业务功能和周边功能。所谓核心业务功能比如登录功能,增加删改查功能等,周边功能比如性能统计、日志、事务管理等。周边功能在Spring的面向切面编程中,被定义为切面。切面功能和核心业务功能独立进行开发,然后将切面功能和核心业务功能根据需要编织在一起,这就是叫面向切面编程。
补充:AOP和OOP的比较
1、AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。
2、上面的陈述可能过于理论化,举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP/OOD的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOD/OOP对一个动作进行封装,则有点不伦不类。换而言之,OOD/OOP面向名词领域,AOP面向动词领域
三、Springboot
在传统的Spring开发过程中,需要做大量的配置工作,而这些配置的大多是通用的,而且配置行为本身只是手段,并不是目的。 基于这个考虑,把该简化的简化,该省略的省略,使开发人员只用关心提供业务功能就行了,这就是 SpringBoot。换言之,SpringBoot可以简单地看成简化了的、按照约定开发的SSM(H),其 开发速度得到了很大提升。
补充:Spring繁琐的配置工作包括:比如需要配置很多Spring框架包的依赖,如spring-core. spring-bean、spring-context等,以及需要做很多框架使用及环境参数的重复配置,如开启注解、配置日志等
使用Springboot的优点
1、自动配置,使用基于类路径和应用程序上下文的智能默认值,当然也可以根据需要重写它们以满足开发人员的需求。
2、创建Spring Boot Starter项目时,可以选择选择需要的功能,Spring Boot将为你管理依赖关系。
3、SpringBoot项目 可以打包成jar文件。可以使用Java-jar命令从命令行将应用程序作为独立的Java应用程序运行
4、在开发web应用程序时,springboot会配置 -一个嵌入式Tomcat服务器,以便它可以作为独立的应用程序运行。(Tomcat是默认的, 当然你也可以配置Jetty或Undertow)
5、SpringBoot包括许 多有用的非功能特性( 例如安全和健康检查)。