Springboot介绍(超详细)-程序员宅基地

技术标签: spring  SpringBoot专栏  java  tomcat  maven  java-ee  

目录

一、Spring和Springboot的区别及其注意事项什么?

         二、忽略文件技巧,这样就可以减少很多不必要的文件生成

三、SpringBoot  Parent讲解

 四、stater的介绍

五、引导类的介绍

六、Springboot内置tomcat(辅助功能必看)可以更改服务


一、Spring和Springboot的区别及其注意事项什么?

二、忽略文件技巧,这样就可以减少很多不必要的文件生成

等弟弟

三、SpringBoot  Parent讲解

小结:

  1. 开发SpringBoot程序要继承spring-boot-starter-parent
  2. spring-boot-starter-parent中定义了若干个依赖管理
  3. 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
  4. 继承parent的形式也可以采用引入依赖的形式实现效果

按住Ctrl点击pom.xml中的spring-boot-starter-dependencies,跳转到了spring-boot-starter-dependencies的pom.xml,xml配置如下(只摘抄了部分重点配置):

<properties>
  	<activemq.version>5.15.3</activemq.version>
  	<antlr2.version>2.7.7</antlr2.version>
  	<appengine-sdk.version>1.9.63</appengine-sdk.version>
  	<artemis.version>2.4.0</artemis.version>
  	<aspectj.version>1.8.13</aspectj.version>
  	<assertj.version>3.9.1</assertj.version>
  	<atomikos.version>4.0.6</atomikos.version>
  	<bitronix.version>2.1.4</bitronix.version>
  	<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
  	<byte-buddy.version>1.7.11</byte-buddy.version>
  	... ... ...
</properties>
<dependencyManagement>
  	<dependencies>
      	<dependency>
        	<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot</artifactId>
        	<version>2.0.1.RELEASE</version>
      	</dependency>
      	<dependency>
        	<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot-test</artifactId>
        	<version>2.0.1.RELEASE</version>
      	</dependency>
      	... ... ...
	</dependencies>
</dependencyManagement>
<build>
  	<pluginManagement>
    	<plugins>
      		<plugin>
        		<groupId>org.jetbrains.kotlin</groupId>
        		<artifactId>kotlin-maven-plugin</artifactId>
        		<version>${kotlin.version}</version>
      		</plugin>
      		<plugin>
        		<groupId>org.jooq</groupId>
        		<artifactId>jooq-codegen-maven</artifactId>
        		<version>${jooq.version}</version>
      		</plugin>
      		<plugin>
        		<groupId>org.springframework.boot</groupId>
        		<artifactId>spring-boot-maven-plugin</artifactId>
        		<version>2.0.1.RELEASE</version>
      		</plugin>
          	... ... ...
    	</plugins>
  	</pluginManagement>
</build>

 四、stater的介绍

 


  • starter

        SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

  • parent

        所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
spring-boot-starter-parent各版本间存在着诸多坐标版本不同

  • 实际开发

        使用任意坐标时,仅书写GAV(groupId, artifactId, version)中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V

小结:

  1. 开发SpringBoot程序需要导入坐标时通常导入对应的starter
  2. 每个不同的starter根据功能不同,通常包含多个依赖坐标
  3. 使用starter可以实现快速配置的效果,达到简化配置的目的

五、引导类的介绍

  • 启动方式
@SpringBootApplication
public class Springboot0101QuickstartApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Springboot0101QuickstartApplication.class, args);
        //获取bean对象
        BookController bean = ctx.getBean(BookController.class);
        System.out.println("bean======>" + bean);
    }
}
  • SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
  • SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

小结:

  1. SpringBoot工程提供引导类用来启动程序
  2. SpringBoot工程启动后创建并初始化Spring容器

六、Springboot内置tomcat(辅助功能必看)可以更改服务

  • 使用maven依赖管理变更起步依赖项
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--web 起步依赖环境中,排除 Tomcat 起步依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 添加 Jetty 起步依赖,版本由 SpringBoot 的 starter 控制 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

  • Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty
  • 内置服务器

        tomcat(默认) apache出品,粉丝多,应用面广,负载了若干较重的组件

        jetty 更轻量级,负载性能远不及tomcat

        undertow undertow,负载性能勉强跑赢tomcat

小结:

  1. 内嵌Tomcat服务器是SpringBoot辅助功能之一
  2. 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理
  3. 变更内嵌服务器思想是去除现有服务器,添加全新的服务器
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_53669566/article/details/124005174

智能推荐

使用GEE(google earth engine)提取某个地区的NDVI值的代码_gee得到一个市的-程序员宅基地

文章浏览阅读1.6w次,点赞22次,收藏173次。其中gz为你导入GEE的矢量文件,L8为landsat的影像,你可以根据自己的要求去获得特定地区的特定卫星的NDVI值。比如说:北京市的哨兵NDVI//定义addNDVI函数,该函数的输入是image,然后对image执行NDVI计算,并将结果命名为ndvi//并将生成的ndvi添加到原有的image中var addNDVI = function(image) { var ndvi..._gee得到一个市的

How to get rid of 'Enter password to unlock your login keyring' in Ubuntu(转)-程序员宅基地

文章浏览阅读121次。http://karuppuswamy.com/wordpress/2010/06/18/enter-password-to-unlock-your-keyring-prompt-in-ubuntu/Ubuntu uses Centralized password management tool called Seahorse. This tool is a front end..._wordpress front end change password

jQuery事件处理概述_jq 再次点击-程序员宅基地

文章浏览阅读1k次。jQuery事件1 概述2 页面载入完毕响应事件2.1 window.onload2.2 $(document).ready()事件3 绑定与反绑定事件监听器3.1 概述3.2 绑定事件3.3 jQuery事件处理函数的好处3.4 反绑定事件3.5 一次性的事件绑定4 事件触发器4.1 trigger触发事件4.2 triggerHandler触发事件4.3 Event Helpers快捷事件5 事件的交互处理5.1 hover:模仿鼠标悬停6 事件对象6.1 使用jQuery事件对象6.2 Javascr_jq 再次点击

android spinner自定义样式,android自定义Spinner下拉菜单(下拉列表框)样式-程序员宅基地

文章浏览阅读963次。在Android中Spinner就是下拉菜单,它相当于HTML中的标签。Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用,不过我们还是可以通过定义xml的方式来改变下拉菜单的样式。在layout目录下新建一个xml文件,名字随便(我这里叫myspinner.xml)。在这个文件里面可以定义下拉菜单的样式我们这里采用TextView来实现..._android spinner样式

sql server赋予用户备份数据库和还原数据库权限_sql新建的用户没有备份权限怎么办-程序员宅基地

文章浏览阅读4.7k次。sql server赋予用户备份数据库和还原数据库权限sa用户下,新建一个用户确定即可赋权(sa用户赋权)grant backup database to qq; ----把备份数据库的权限赋予给qqgrant create database to qq; ---吧创建数据库的权限赋予给qq两个权限都要在master数据库..._sql新建的用户没有备份权限怎么办

地图与定位_spring 地名查询-程序员宅基地

文章浏览阅读503次。2014-11-27 08:52 by KenshinCui, 111501 阅读, 28 评论, 收藏, 编辑概览现在很多社交、电商、团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式。例如你到了一个陌生的地方想要查找附近的酒店、超市等就可以打开软件搜索周边;类似的,_spring 地名查询

随便推点

POj 3164 Command Network最小树形图 模板题 朱刘算法_最小树形图习题-程序员宅基地

文章浏览阅读129次。Command NetworkAfter a long lasting war on words, a war on arms finally breaks out between littleken’s and KnuthOcean’s kingdoms. A sudden and violent assault by KnuthOcean’s force has rendered a total failure of littleken’s command network. A provisional_最小树形图习题

省市县三级联动获取地址_省市县三级联动获取参保地区划-程序员宅基地

文章浏览阅读726次。1.jsp代码前端传参格式:(type,codeId)type:三种类型(“province” || “city” || “area”)codeId:为选择省的时后自动传入.后台返回JSON数据格式:&amp;lt;%@ page contentType=&quot;text/html;charset=UTF-8&quot; language=&quot;java&quot; %&amp;gt;&amp;lt;html&amp;g_省市县三级联动获取参保地区划

petshop4.0 各个文件的作用-程序员宅基地

文章浏览阅读43次。petshop4.0 各个文件的作用petshop4.0设计说明 (转) 一、项目名称及描述:(实现步骤为:4-3-6-5-2-1)1、WEB=表示层2、BLL=业务逻辑层3、IDAL=数据访问层接口定义4、Model=业务实体5、DALFactory=数据层的抽象工厂(创建反射)6、SQLServerDAL=SQLServer数据访问层 / OracleDAL=Ora...

Could not load dynamic library ‘cudart64_101.dll‘; dlerror: cudart64_101.dll not found_could not load dynamic library 'cudart64_101.dll';-程序员宅基地

文章浏览阅读343次。tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cudart64_101.dll’; dlerror: cudart64_101.dll not found(在Pycharm上运行tensorflow_gpu报错:dll文件没有找到)我是一个刚入门tensorflow_gpu的小白,在花了好长时间才把anaconda,CUDA10.0,Cudnn,Pycharm202_could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll

Vue 腾讯云上传视频 element-ui_elemet ui 腾讯短视频api 上传-程序员宅基地

文章浏览阅读292次,点赞2次,收藏3次。Vue 腾讯云上传视频文件 使用element-ui组件下载 腾讯云包npm i cos-js-sdk-v5 --savetemlpate 部分 <el-upload :on-remove="handleVodRemove" :before-remove="beforeVodRemove" :on-exceed="handleUploadExceed" :file-list="fileList" :on-change="handleChange" acti_elemet ui 腾讯短视频api 上传

谷歌手机pixel4 夜景_如何在Google Pixel手机上拍摄屏幕截图-程序员宅基地

文章浏览阅读1.1k次。谷歌手机pixel4 夜景Capturing your phone’s screen is useful in many situations. If you’re a Pixel user, you can do it with a couple of button clicks. 在许多情况下,捕获手机的屏幕非常有用。 如果您是Pixel用户,则只需单击几下即可完成操作。 如何截图 (H..._pxiel 4 如何截屏