前言
最近,公司传来“噩耗”:公司统一技术栈,一律使用java语言开发,没得商量。此时,作为“世界上最好语言”的phper博主,心情如下:
00493b59646382083565047f567ed1e12f9d2ce1.png
好吧,开玩笑的。毕竟作者一贯的理念是“语言只是工具”,so,语言什么的无所谓~(实在是最近行业不景气…………)
说说作者的情况吧,从业5年多,因为业务需要,java安卓,c++,python基本上学了个遍,正常都是为了实现某个业务模块去自学一个语种,所以,自认为对java还是有点基础的。于是,开始了spring的学习(坑)之路~
技术选型
基于目前的现状,基本上没什么选择,上spring全家桶吧。早期还有不少基于Struts1&Struts2的项目,但是因为著名的RCE(远程代码执行)漏洞导致大批开发者远离。当然,基于一些历史原因,Struts还是有不少的市场的。
spring概念
spring系列的框架有一堆,总是不经意间会被srping、springMVC、SpringBoot ,SpringBoot 这些东西绕晕,它们都是什么?彼此间又是什么关系?
- spring
spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器,Java 开发框架,spring是为了简化企业级开发的框架,在实际开发中还是需要配置xml文件或者javaconfig文件,并且需要考虑各个框架之间的融合性问题。
IoC:控制反转,一种设计思想,它是spring的核心。
对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。对于这个描述还是不理解的话,
你需要找个女盆友(男盆友也行),要求是S型曲线,瓜子脸,肤白貌美……,显然除了你一个个去找没有其它办法。但是现在有了“中介”,你直接把你的要求告诉中介,中介直接给你提供“对象”,是不是很爽?,是的,IoC干的这样的事。简而言之,对象交给 spring (IoC)控制管理,而不是传统的由你在对象内部直接控制。
AOP:传统OOP面向对象编程,在我们实际开发中都会有具体的业务模块需求,但是我们在实现这些业务模块功能的时候,经常要干一些额外的不可避免的事情,比如事务的管理,日志的记录等,并且在每个业务模块都必须要实现一次,这就导致代码的重复和耦合。AOP把软件分为两个部分:核心业务逻辑组件和横切关注点。核心业务逻辑就是我们要实现的业务逻辑,而像日志、验证、事务等等这些与核心业务逻辑不想关的称为横切关注点。
1.jpg已实现一个系统的登录举例,
1.png
我们可以把业务流程1和业务流程2看做核心业务逻辑(竖着看),但是横着的验证,日志记录等这些不属于核心业务逻辑却必须要做(不做这些你试试?),横着的这部分就叫做横切关注点,整体上看就像验证日志这些功能横着切入竖着的核心业务流程当中去的,有木有很形象?!
AOP的好处不言而喻:
1.横切关注点都集中于一块,不会出现大量重复代码;
2.核心模块只关注核心功能的代码,模块间藕合度降低。
简而言之,AOP就是在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想。
- springMVC
springMVC主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分。我们可以把spring和mvc分开理解,mvc相信各位开发者都很了解,简言之就是c(控制器)将v(视图)与m(模块业务)分开构成了mvc,spring作为专业的开发web项目的开源框架,springMVC为内部的一个模块环节,同样采取mvc设计模式。 所以在使用spring开发web项目时,作为核心环节的MVC可以使用struts1/struts2/springMVC等
- springboot
使用spring整合基础框架时会发现如下两点:
- 整了半天云里雾里不知道在干什么
- 手动配置很是繁琐
此时,springboot闪亮登场。主要特点如下:
- 注解会给使用者提供方便
- 对第三方技术进行了很好的封装和整合,提供了大量第三方接口
- 可以通过依赖自动配置,不需要XML等配置文件
- 提供了安全等特性
- springcloud
springcloud是微服务解决方案,非常方便,是基于springboot的。
总结
综上,目前可以这么理解
- springMVC是spring框架的一部分
- 快速构建项目直接使用springboot即可
- 想比较好的理解springboot最好还是从spring入手,这样对比才能理解springboot到底做了哪些东西
- springcloud是基于springboot提供的微服务方案
网友评论