ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对Ioc、AOP、Springboot的理解

2021-09-11 21:01:23  阅读:227  来源: 互联网

标签:功能 Springboot Spring 配置 OOP AOP Ioc 切面


一、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包括许 多有用的非功能特性( 例如安全和健康检查)。



参考链接

how2j.cn学习网—— SPRING系列教材 

标签:功能,Springboot,Spring,配置,OOP,AOP,Ioc,切面
来源: https://www.cnblogs.com/qjy-coding/p/15256744.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有