激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot應用開發初探與實例講解

Spring Boot應用開發初探與實例講解

2021-10-27 11:14Ricky Java教程

這篇文章主要介紹了Spring Boot應用開發初探與實例講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Spring Boot是由Pivotal團隊提供的全新Spring開發框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。

從它的名字可以看出,Spring Boot 的作用在于創建和啟動新的基于 Spring 框架的項目。

它的目的是幫助開發人員很容易的創建出獨立運行和產品級別的基于 Spring 框架的應用。

它包含的特性如下:

  • 應用獨立運行,對于Web應用直接嵌入應用服務器(Tomcat or Jetty)
  • 根據項目的依賴(Maven or Gradle中定義的依賴)自動配置Spring框架的特性
  • 提供生產環境中的監控功能——性能、應用狀態信息等
  • 不會生成繁瑣的Java代碼以及XML配置文件

在這節課中,我們將對Spring Boot的方方面面進行初步的探索,看看Spring Boot究竟能為我們提供怎樣的開發能力。

環境準備

  • 一個稱手的文本編輯器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、Idea Intellij)
  • Java環境(JDK 1.7或以上版本)
  • 構建工具Gradle 2.3

使用Gradle作為項目構建工具

首先創建一個項目目錄,在目錄中創建一個Gradle項目描述文件build.gradle:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:1.2.5.RELEASE"
        classpath "com.github.adrianbk:gradle-jvmsrc-plugin:0.6.1"
    }
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'com.github.adrianbk.jvmsrc'
jvmsrc {
    packageName "tmy"
}
jar {
    baseName = 'spring-boot-guides'
    version =  '1.0.0'
}
repositories {
    jcenter()
}
dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
}
task wrapper(type: Wrapper) {
    gradleVersion = '2.4'
}

在這個文件中,使用到了Spring Boot Gradle插件來幫助我們簡化一些配置工作:

  • 提供了Spring Boot框架的依賴定義,在dependencies標簽中直接使用它們即可(不需要聲明版本號)
  • 將應用的代碼及所有的依賴打包成一個單獨的jar文件
  • 自動搜索main函數并作為jar文件的啟動函數,jar文件是一個獨立可執行的文件

另外由于Gradle的默認特性——例如源代碼放在src/main/java文件夾下,我們引入Gradle JVM Src插件,通過配置:

?
1
2
3
4
apply plugin: 'com.github.adrianbk.jvmsrc'
jvmsrc {
    packageName "tmy"
}

并運行gradle createJvmSrcDirs,src/main/java/tmy等目錄就被創建出來,省去我們手動創建的麻煩。

Spring Boot能做什么

Spring Boot本身并沒有在Spring框架的基礎上擴展新功能,它僅僅是提供了一種更加快速構建Spring應用的方式。Spring Boot會在根據類路徑上的依賴(也就是Maven或Gradle中定義的依賴)來自動完成配置。例如:

  • 使用Spring MVC開發Web應用,一般需要配置各類Bean(無論是XML還是Java Config),例如DispacherServlet。當Spring Boot應用啟動后,如果spring-webmvc依賴在類路徑上,Spring Boot會自動把這些配置全部自動添加,并且不生成任何代碼。傳統的Spring MVC應用運行時還需要Servlet容器,Spring Boot會內嵌一個Tomcat或Jetty來運行應用,這同樣也不需要開發者進行任何配置。
  • 如果不想使用Tomcat,而是換成Jetty?沒問題,在build.gradle中去掉Tomcat的依賴(默認配置),換成Jetty應用服務器的依賴,除此之外應用代碼不需要進行任何改變。
  • 模板引擎Thymeleaf也同樣被Spring Boot支持自動發現,以往瑣碎的配置如今也變成了1-2行Gradle依賴配置。

提示

Spring Boot不會生成或者修改你的源代碼,它僅僅是在應用啟動時根據類路徑以及應用配置動態的改變Spring應用上下文的配置

簡單的Web應用

現在我們創建一個最簡單的Web應用:

src/main/java/tmy/Application.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package tmy;
import java.util.Arrays;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
@SpringBootApplication
public class Application {
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        System.out.println("Let's inspect the beans provided by Spring Boot:");
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }
    }
}

@SpringBootApplication是Spring Boot提供的注解,他相當于加上如下注解:

  • @Configuration,表明Application是一個Spring的配置對象,用于配置Spring應用上下文。
  • @EnableAutoConfiguration,Spring Boot會根據類路徑(classpath)以及一些屬性值來自動完成一些配置行為,例如:開發基于Spring MVC的Web應用,需要在配置中加上@EnableWebMvc直接來激活一些默認的Web配置,一旦Spring Boot發現運行時類路徑上包含了 spring-webmvc 依賴,它會自動的完成一個Web應用的基本配置——例如配置DispatcherServlet等等。
  • @ComponenScan告知Spring應用從什么位置去發現Spring構件(@Component, @Service, @Configuration)等等

運行Web應用

完成上述配置后,運行應用有兩種方法:

  • 在IDE中直接運行main方法
  • 通過Gradle打包應用:gradle build,運行:java -jar build/libs/${appname}-{version}.jar

在控制臺的輸出中會發現如下信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Let's inspect the beans provided by Spring Boot:
application
beanNameHandlerMapping
defaultServletHandlerMapping
dispatcherServlet
embeddedServletContainerCustomizerBeanPostProcessor
handlerExceptionResolver
helloController
httpRequestHandlerAdapter
messageSource
mvcContentNegotiationManager
mvcConversionService
mvcValidator
org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$DispatcherServletConfiguration
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$EmbeddedTomcat
org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration
org.springframework.boot.context.embedded.properties.ServerProperties
org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor
org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration
propertySourcesBinder
propertySourcesPlaceholderConfigurer
requestMappingHandlerAdapter
requestMappingHandlerMapping
resourceHandlerMapping
simpleControllerHandlerAdapter
tomcatEmbeddedServletContainerFactory
viewControllerHandlerMapping

這就是Spring應用上下文中的所有Bean信息,其中有Spring MVC中需要用到的dispatcherServlet, mvcConversionService, mvcValidator等等悉數在列,而我們并沒有進行任何的配置,這也就是Spring Boot完成的工作。

訪問瀏覽器或者使用curl:

?
1
2
$ curl localhost:8080
Greetings from Spring Boot!

添加生產環境特性

雖然沒有將應用打成WAR包并放入應用服務器中,但Spring Boot本身是可以應用于生成環境的。為了能夠獲取生產環境的應用信息,Spring Boot提供了開箱即用的模塊Actuator:

?
1
compile("org.springframework.boot:spring-boot-starter-actuator")

在添加完這個依賴后并啟動應用,會看到多了一些URL Mapping信息:

2015-07-24 12:05:33.440  ... : Mapped "{[/info],methods=[GET],params=[],headers=[],consum...
2015-07-24 12:05:33.441  ... : Mapped "{[/autoconfig],methods=[GET],params=[],headers=[],...
2015-07-24 12:05:33.441  ... : Mapped "{[/mappings],methods=[GET],params=[],headers=[],co...
2015-07-24 12:05:33.442  ... : Mapped "{[/trace],methods=[GET],params=[],headers=[],consu...
2015-07-24 12:05:33.442  ... : Mapped "{[/env/{name:.*}],methods=[GET],params=[],headers=...
2015-07-24 12:05:33.442  ... : Mapped "{[/env],methods=[GET],params=[],headers=[],consume...
2015-07-24 12:05:33.443  ... : Mapped "{[/configprops],methods=[GET],params=[],headers=[]...
2015-07-24 12:05:33.443  ... : Mapped "{[/metrics/{name:.*}],methods=[GET],params=[],head...
2015-07-24 12:05:33.443  ... : Mapped "{[/metrics],methods=[GET],params=[],headers=[],con...
2015-07-24 12:05:33.444  ... : Mapped "{[/health],methods=[GET],params=[],headers=[],cons...
2015-07-24 12:05:33.444  ... : Mapped "{[/dump],methods=[GET],params=[],headers=[],consum...
2015-07-24 12:05:33.445  ... : Mapped "{[/beans],methods=[GET],params=[],headers=[],consu...

通過這些URL我們可以獲知Spring應用的運行時信息,例如:

?
1
2
3
$ curl localhost:8080/health
{"status":"UP"}
Spring Boot Starters

為了能夠快速開發各類型的應用以及支持種類繁多的第三方庫,Spring Boot提供了大量的starter依賴,引入這些依賴后應用即擁有開箱即用的配置,舉例:

?
1
compile("org.springframework.boot:spring-boot-starter-thymeleaf")

那么只需要將模板文件放入src/main/resources/templates目錄下,即可以正常的編寫Spring MVC的Web頁面了。

總結

Spring 框架作為目前非常流行的一個 Java 應用開發框架,它所包含的內容是非常繁多的。

Spring 框架包含幾十個不同的子項目,涵蓋應用開發的不同方面。要在這些子項目之間進行選擇,并快速搭建一個可以運行的應用是比較困難的事情。Spring Boot 的目的在于快速創建可以獨立運行的 Spring 應用。

通過 Spring Boot 可以根據相應的模板快速創建應用并運行。Spring Boot 可以自動配置 Spring 的各種組件,并不依賴代碼生成和 XML 配置文件。Spring Boot 可以大大提升使用 Spring 框架時的開發效率。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://www.tianmaying.com/tutorial/spring-boot-intro

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 国产在线一级视频 | 色悠悠久久久久 | 久久久一区二区三区四区 | 激情av在线 | 久草在线综合 | 久久久精品视 | 欧洲黄色一级视频 | 9999久久久久久 | 欧美一级高潮片免费的 | 亚洲国产高清视频 | 毛片国产 | 女人解衣喂奶电影 | 一本色道久久综合亚洲精品图片 | 日本a∨精品中文字幕在线 欧美1—12sexvideos | 久久久久免费电影 | 女18一级大黄毛片免费女人 | 国产亚洲精品久久久久久久久 | 久久免费视频精品 | 在线视频 欧美日韩 | 91网站免费在线观看 | 国产欧美一区二区三区免费看 | 国产欧美日本 | 久久九九热re6这里有精品 | 成人免费毛片一 | 毛片118极品美女写真 | 成人在线高清视频 | 亚州综合一区 | 99久久久国产 | 九九热精品在线 | 中国字幕av | 女人叉开腿让男人桶 | 国产成人精品一区在线播放 | 久久草草亚洲蜜桃臀 | 亚洲一二三久久 | 亚洲一区在线视频 | 高清中文字幕在线 | 成人福利在线 | 日韩黄色片在线观看 | 国产精品久久99精品毛片三a | 欧美综合在线观看 | 逼片|