springBoot之springBoot简介_springboot 算j2ee吗-程序员宅基地

技术标签: spring  spring boot  java  springBoot  

我们要学习springBoot之前,需要了解什么是spring?

一、spring简介

  1. Spring是一个开源框架,它由Rod Johnson创建,是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,它是为了解决企业应用开发的复杂性而创建的。
  2. Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
    目的:解决企业应用开发的复杂性。
    功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。
    范围:任何Java应用。
  3. Spring的核心是:控制反转(IoC)面向切面编程(AOP)。什么是IOC、AOP这里就不做详细说明了,感兴趣的朋友可以自行去查找;
  4. Spring提供对持久层(Persistence)、事物(Transcation)的支持。
  5. Spring供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
  6. Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
    总之,Spring是一个全方位的应用程序框架。

二、spring的优缺点

优点
  1. 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
  2. 可以提供众多服务,事务管理,WS等。
  3. AOP的很好支持,方便面向切面编程。
  4. 对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
  5. Spring DI机制降低了业务对象替换的复杂性。
  6. Spring属于低侵入,代码污染极低。
  7. Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
缺点

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。

除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
1.jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
2.Spring不支持分布式,这也是EJB仍然在用的原因之一。

三、springBoot简介

为了解决上述spring的缺点问题,所以springBoot就出现了。

SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

Spring Boot 是由 Pivotal 团队提供的全新框架,2014 年 4 月发布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0发布。它是对spring的进一步封装,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。怎么简化的呢?就是通过封装、抽象、提供默认配置等方式让我们更容易使用。

SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。

三、springBoot特点

springBoot具有以下特点:

  1. 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
  2. 内嵌Tomcat或Jetty等Servlet容器,应用无需打成WAR包
  3. 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置
  4. 大量的自动配置,简化开发,也可修改默认值
  5. 无需配置XML,无代码生成,开箱即用
  6. 提供准备好的特性,如指标、健康检查和外部化配置

三、springBoot两个重要的策略

开箱即用(Outofbox)

在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑

约定优于配置(Convention over configuration)

由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化

简单来讲,springBoot就是为了优化spring框架开发的,它自动的封装了一些配置和功能,只需要简单的引入几个starter依赖就可以快速的创建一个spring项目,让开发人员从spring配置中解放出来,更加注重业务和功能的开发。

参考:
https://www.jianshu.com/p/24add3c5fedb
https://www.cnblogs.com/mooba/p/11753086.html

下一篇:如何搭建第一个简单的springBoot项目(Hello World)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33631756/article/details/117216300

智能推荐

Android中/system/build.prop文件解读_op system/system/build.prop cp: error writing 'sys-程序员宅基地

文章浏览阅读3k次。在/system下的build.prop文件里,我们常看见以下语句。ro.ril.hsdpa.category = 10ro.ril.hsupa.category = 6ro.ril.hsxpa = 2ro.ril.enable.amr.wideband=1wifi.supplicant_scan_interval=45dalvik.vm.heapsize=24m _op system/system/build.prop cp: error writing 'system/system/build.prop': no

怪异的inet_ntoa函数---C/C++返回内部静态成员的陷阱_inet_ntoa 释放-程序员宅基地

文章浏览阅读600次。在我们用C/C++开 发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发 人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存。这 是一个让无数人困扰的问题。如果你一不小心,你就很有可能在这个上面犯错误。当然目前有很多解决_inet_ntoa 释放

ZwQuerySystemInformation 查看系统进程信息_zwduplicateobject系统进程-程序员宅基地

文章浏览阅读580次。#include typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemProcessorInformation, SystemPerformanceInformation, SystemTimeOfDayInformation, Syst_zwduplicateobject系统进程

深入理解Java虚拟机-第3章-垃圾收集器_从整体来看是基于“标记--整理”算法实现的收集器;从局部上来看是基于“复制”-程序员宅基地

文章浏览阅读118次。JVM的垃圾收集器经历了多代的发展,从单线程收集器到多线程收集器。一、背景垃圾回收器经历过多代的发展,从单线程到多线程,垃圾收集器的大家族产品如下,每一个连线表示可以组合使用。接下来大概分为几个阶段详细介绍下各个垃圾回收器的特点:阶段收集器名称区域并行/串行/并发算法优缺点适用场景第一阶段Serial新生代串行复制响应速度快单CPU环境下的Client模式Serial Old老年代串行标志-整理响应速度快单CPU环境下的Client._从整体来看是基于“标记--整理”算法实现的收集器;从局部上来看是基于“复制”

反弹shell-程序员宅基地

文章浏览阅读1.7w次,点赞19次,收藏92次。一、课时目标1.理解shell的概念2.理解交互式shell和非交互式shell的区别3.掌握反弹shell的原理和方法_反弹shell

做crud遇到的问题_this.crud.toquery()-程序员宅基地

文章浏览阅读363次。1.crud的流程1 流程: servlet调service进行业务处理service调dao完成数据库操作dao在把数据库操作结果在给serviceservice继续处理在把结果返回给servletservlet在根据service的处理结果选择是请求转发还是重定向来显示页面2.登录功能效验实现2 流程(登录功能效验实现):servlet层中UserServlet调UserServiceImplUserServiceImpl调UserDaoImplUserDaoImpl操作数据_this.crud.toquery()

随便推点

Fastjson漏洞修复参考-程序员宅基地

文章浏览阅读6.5k次。Fastjson漏洞修复参考1. 漏洞背景​ Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。Fastjson多处补丁修补出现纰漏,Fastjson在1.2.68版本以下,无需Autotype开启,或者可绕过autoType限制,攻击者即可通过精心构造的请求包在使用Fastjson的服务器上进行远程代码执行。受影响的版本:fastjson <=1.2.68fas_fastjson漏洞修复

C++ vector用法总结_vector<int>::iterator it = m_vec.begin()-程序员宅基地

文章浏览阅读394次,点赞2次,收藏3次。C++ 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。_vector::iterator it = m_vec.begin()

Java学习路线&笔记链接_java 学习连-程序员宅基地

文章浏览阅读195次。Java学习路线&笔记链接????JAVASE数据库mysql(或oracle)JDBCWEB前端HTMLCSSJavaScriptJavaWeb(web后端)ServletJSPweb进阶AJAXjQueryJavaWeb项目实战SSM三大框架(额外可选学SSH)MyBatisSpringSpringMVC互联网分布式JAVASEJava语言的基础,是Java的最基本的库。基础语法加常用类库。数据库mysql(或oracle)数据库是所有程序员都需要学习的,因为不管是C语言,还是C++,_java 学习连

ESD二极管ESD05V56T-2L参数_esd二极管容值-程序员宅基地

文章浏览阅读358次。      ESD05V56T-2L的参数:  封装:SOT-563  电压:5V  钳位电压:9.8V  容值:3pF  功率:100W  ESD05V56T-2L的特性:  1、依据(tp=8/20μs)线路,峰值脉冲功率为100W  2、保护两个I/O线及电源线  3、适合高速接口的低电容  4、工作电压:5V  5、超小型封装要求小于2.9mm2的PCB面积  6、IEEE1394高速火线端口  6、IEC61000-4-2(ESD)±15_esd二极管容值

vim 配置-程序员宅基地

文章浏览阅读381次。1.安装git:sudoapt-get install git2.安装Bundle:gitclone https://github.com/gmarik/vundle.git~/.vim/bundle/vundle3.在.vimrc文件中添加如下语句4.自动安装插件wget -qO- https://raw.github.com/ma6174/vim/master/setup.sh | sh..._bundle 'last_edit_marker.vim

重生-程序员宅基地

文章浏览阅读479次。【内容】在提高班什么才是最有价值的? 在跟一些同学聊天的过程中,很多同学说不会干太长时间的计算机的,也包括最近在读的李笑来老师的重生-七年就是一辈子,每七年就会获得一项新的技能,包括Bill经常给我们分享的内容,还有自己进提高班的初衷,让我更加深刻地意识到,提高班根本不是单纯地学习计算机知识的地方,大家想想,像现在知识爆棚的时代,每半年就有1/2的知识被淘汰,如果我们以学习知识为目的,那无疑我们是