技术标签: spring spring boot java springBoot
我们要学习springBoot之前,需要了解什么是spring?
- Spring是一个开源框架,它由Rod Johnson创建,是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品,它是为了解决企业应用开发的复杂性而创建的。
- Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
目的
:解决企业应用开发的复杂性。
功能
:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能。
范围
:任何Java应用。- Spring的核心是:
控制反转(IoC)
和面向切面编程(AOP)
。什么是IOC、AOP这里就不做详细说明了,感兴趣的朋友可以自行去查找;- Spring提供对持久层(Persistence)、事物(Transcation)的支持。
- Spring供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装。
- Spring提供了对现存的各种框架(Structs、JSF、Hibernate、Ibatis、Webwork等)相整合的方案。
总之,Spring是一个全方位的应用程序框架。
- 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
- 可以提供众多服务,事务管理,WS等。
- AOP的很好支持,方便面向切面编程。
- 对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等
- Spring DI机制降低了业务对象替换的复杂性。
- Spring属于低侵入,代码污染极低。
- Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。
除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
1.jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器
2.Spring不支持分布式,这也是EJB仍然在用的原因之一。
为了解决上述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具有以下特点:
- 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
- 内嵌Tomcat或Jetty等Servlet容器,应用无需打成WAR包
- 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 提供准备好的特性,如指标、健康检查和外部化配置
开箱即用(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
文章浏览阅读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
文章浏览阅读600次。在我们用C/C++开 发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发 人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你一定要返回一块函数外部还有效的内存。这 是一个让无数人困扰的问题。如果你一不小心,你就很有可能在这个上面犯错误。当然目前有很多解决_inet_ntoa 释放
文章浏览阅读580次。#include typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemProcessorInformation, SystemPerformanceInformation, SystemTimeOfDayInformation, Syst_zwduplicateobject系统进程
文章浏览阅读118次。JVM的垃圾收集器经历了多代的发展,从单线程收集器到多线程收集器。一、背景垃圾回收器经历过多代的发展,从单线程到多线程,垃圾收集器的大家族产品如下,每一个连线表示可以组合使用。接下来大概分为几个阶段详细介绍下各个垃圾回收器的特点:阶段收集器名称区域并行/串行/并发算法优缺点适用场景第一阶段Serial新生代串行复制响应速度快单CPU环境下的Client模式Serial Old老年代串行标志-整理响应速度快单CPU环境下的Client._从整体来看是基于“标记--整理”算法实现的收集器;从局部上来看是基于“复制”
文章浏览阅读1.7w次,点赞19次,收藏92次。一、课时目标1.理解shell的概念2.理解交互式shell和非交互式shell的区别3.掌握反弹shell的原理和方法_反弹shell
文章浏览阅读363次。1.crud的流程1 流程: servlet调service进行业务处理service调dao完成数据库操作dao在把数据库操作结果在给serviceservice继续处理在把结果返回给servletservlet在根据service的处理结果选择是请求转发还是重定向来显示页面2.登录功能效验实现2 流程(登录功能效验实现):servlet层中UserServlet调UserServiceImplUserServiceImpl调UserDaoImplUserDaoImpl操作数据_this.crud.toquery()
文章浏览阅读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漏洞修复
文章浏览阅读394次,点赞2次,收藏3次。C++ 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。_vector::iterator it = m_vec.begin()
文章浏览阅读195次。Java学习路线&笔记链接????JAVASE数据库mysql(或oracle)JDBCWEB前端HTMLCSSJavaScriptJavaWeb(web后端)ServletJSPweb进阶AJAXjQueryJavaWeb项目实战SSM三大框架(额外可选学SSH)MyBatisSpringSpringMVC互联网分布式JAVASEJava语言的基础,是Java的最基本的库。基础语法加常用类库。数据库mysql(或oracle)数据库是所有程序员都需要学习的,因为不管是C语言,还是C++,_java 学习连
文章浏览阅读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二极管容值
文章浏览阅读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的知识被淘汰,如果我们以学习知识为目的,那无疑我们是