欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot應(yīng)用開發(fā)初探與實例講解

 更新時間:2021年07月29日 12:12:20   作者:Ricky  
這篇文章主要介紹了Spring Boot應(yīng)用開發(fā)初探與實例講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Spring Boot是由Pivotal團(tuán)隊提供的全新Spring開發(fā)框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。

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

它的目的是幫助開發(fā)人員很容易的創(chuàng)建出獨(dú)立運(yùn)行和產(chǎn)品級別的基于 Spring 框架的應(yīng)用。

它包含的特性如下:

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

在這節(jié)課中,我們將對Spring Boot的方方面面進(jìn)行初步的探索,看看Spring Boot究竟能為我們提供怎樣的開發(fā)能力。

環(huán)境準(zhǔn)備

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

使用Gradle作為項目構(gòu)建工具

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

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標(biāo)簽中直接使用它們即可(不需要聲明版本號)
  • 將應(yīng)用的代碼及所有的依賴打包成一個單獨(dú)的jar文件
  • 自動搜索main函數(shù)并作為jar文件的啟動函數(shù),jar文件是一個獨(dú)立可執(zhí)行的文件

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

apply plugin: 'com.github.adrianbk.jvmsrc'
jvmsrc {
    packageName "tmy"
}

并運(yùn)行g(shù)radle createJvmSrcDirs,src/main/java/tmy等目錄就被創(chuàng)建出來,省去我們手動創(chuàng)建的麻煩。

Spring Boot能做什么

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

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

提示

Spring Boot不會生成或者修改你的源代碼,它僅僅是在應(yīng)用啟動時根據(jù)類路徑以及應(yīng)用配置動態(tài)的改變Spring應(yīng)用上下文的配置

簡單的Web應(yīng)用

現(xiàn)在我們創(chuàng)建一個最簡單的Web應(yīng)用:

src/main/java/tmy/Application.java

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提供的注解,他相當(dāng)于加上如下注解:

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

運(yùn)行Web應(yīng)用

完成上述配置后,運(yùn)行應(yīng)用有兩種方法:

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

在控制臺的輸出中會發(fā)現(xiàn)如下信息:

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應(yīng)用上下文中的所有Bean信息,其中有Spring MVC中需要用到的dispatcherServlet, mvcConversionService, mvcValidator等等悉數(shù)在列,而我們并沒有進(jìn)行任何的配置,這也就是Spring Boot完成的工作。

訪問瀏覽器或者使用curl:

$ curl localhost:8080
Greetings from Spring Boot!

添加生產(chǎn)環(huán)境特性

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

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

在添加完這個依賴后并啟動應(yīng)用,會看到多了一些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應(yīng)用的運(yùn)行時信息,例如:

$ curl localhost:8080/health
{"status":"UP"}
Spring Boot Starters

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

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

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

總結(jié)

Spring 框架作為目前非常流行的一個 Java 應(yīng)用開發(fā)框架,它所包含的內(nèi)容是非常繁多的。

Spring 框架包含幾十個不同的子項目,涵蓋應(yīng)用開發(fā)的不同方面。要在這些子項目之間進(jìn)行選擇,并快速搭建一個可以運(yùn)行的應(yīng)用是比較困難的事情。Spring Boot 的目的在于快速創(chuàng)建可以獨(dú)立運(yùn)行的 Spring 應(yīng)用。

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

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot項目集成xxljob實現(xiàn)全紀(jì)錄

    SpringBoot項目集成xxljob實現(xiàn)全紀(jì)錄

    XXL-JOB是一個分布式任務(wù)調(diào)度平臺,本文主要介紹了SpringBoot項目集成xxljob實現(xiàn)全紀(jì)錄,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java劍指offer之刪除鏈表的節(jié)點

    Java劍指offer之刪除鏈表的節(jié)點

    這篇文章主要介紹了Java劍指offer之刪除鏈表的節(jié)點,給定單向鏈表的頭指針和一個要刪除的節(jié)點的值,定義一個函數(shù)刪除該節(jié)點。返回刪除后的鏈表的頭節(jié)點,下文更多相關(guān)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-04-04
  • Mybatis中的like模糊查詢功能

    Mybatis中的like模糊查詢功能

    這篇文章主要介紹了Mybatis中的like模糊查詢功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Mybatis-Plus雪花id的使用以及解析機(jī)器ID和數(shù)據(jù)標(biāo)識ID實現(xiàn)

    Mybatis-Plus雪花id的使用以及解析機(jī)器ID和數(shù)據(jù)標(biāo)識ID實現(xiàn)

    這篇文章主要介紹了Mybatis-Plus雪花id的使用以及解析機(jī)器ID和數(shù)據(jù)標(biāo)識ID實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringMVC KindEditor在線編輯器之文件上傳代碼實例

    SpringMVC KindEditor在線編輯器之文件上傳代碼實例

    這篇文章主要介紹了SpringMVC KindEditor在線編輯器之文件上傳代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 淺談hibernate中多表映射關(guān)系配置

    淺談hibernate中多表映射關(guān)系配置

    下面小編就為大家?guī)硪黄獪\談hibernate中多表映射關(guān)系配置。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Intellij IDEA十大快捷鍵

    Intellij IDEA十大快捷鍵

    Intellij IDEA中有很多快捷鍵讓人愛不釋手,stackoverflow上也有一些有趣的討論.這篇文章主要介紹了Intellij IDEA十大快捷鍵,需要的朋友可以參考下
    2018-03-03
  • 解決springboot配置logback-spring.xml不起作用問題

    解決springboot配置logback-spring.xml不起作用問題

    這篇文章主要介紹了解決springboot配置logback-spring.xml不起作用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java中的final關(guān)鍵字和抽象類詳解

    Java中的final關(guān)鍵字和抽象類詳解

    這篇文章主要介紹了Java中的final關(guān)鍵字和抽象類詳解,當(dāng)不希望 類被繼承時,可以用final修飾比如不希望子類重寫父類時,當(dāng)不希望某個局部變量被修改時,對參數(shù)進(jìn)行修飾,需要的朋友可以參考下
    2023-07-07
  • SpringBoot開發(fā)案例 分布式集群共享Session詳解

    SpringBoot開發(fā)案例 分布式集群共享Session詳解

    這篇文章主要介紹了SpringBoot開發(fā)案例 分布式集群共享Session詳解,在分布式系統(tǒng)中,為了提升系統(tǒng)性能,通常會對單體項目進(jìn)行拆分,分解成多個基于功能的微服務(wù),可能還會對單個微服務(wù)進(jìn)行水平擴(kuò)展,保證服務(wù)高可用,需要的朋友可以參考下
    2019-07-07

最新評論