久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何理解Spring Boot簡(jiǎn)介與配置

共計(jì) 9181 個(gè)字符,預(yù)計(jì)需要花費(fèi) 23 分鐘才能閱讀完成。

這篇文章給大家介紹如何理解 Spring Boot 簡(jiǎn)介與配置,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

1 Spring Boot 簡(jiǎn)介與配置 1.1 Spring Boot

 Spring Cloud 基于 Spring Boot 搭建,本小節(jié)將對(duì) Spring Boot 作一個(gè)大致的講解,讀者知道 Spring Boot 作用即可。

1.1.1 Spring Boot 簡(jiǎn)介

  開發(fā)一個(gè)全新的項(xiàng)目,需要先進(jìn)行開發(fā)環(huán)境的搭建,例如要確定技術(shù)框架以及版本,還要考慮各個(gè)框架之間的版本兼容問題,完成這些繁瑣的工作后,還要對(duì)新項(xiàng)目進(jìn)行配置,測(cè)試能否正常運(yùn)行,最后才將搭建好的環(huán)境提交給項(xiàng)目組的其他成員使用。經(jīng)常出現(xiàn)的情形是,表面上已經(jīng)成功運(yùn)行,但部分項(xiàng)目組成員仍然無法運(yùn)行,項(xiàng)目初期浪費(fèi)大量的時(shí)間做這些工作,幾乎每個(gè)項(xiàng)目都會(huì)投入部分工作量來做這些固定的事情。

  受 Ruby On Rails、Node.js 等技術(shù)的影響,JavaEE 領(lǐng)域需要一種更為簡(jiǎn)便的開發(fā)方式,來取代這些繁瑣的項(xiàng)目搭建工作。在此背景下,Spring 推出了 Spring Boot 項(xiàng)目,該項(xiàng)目可以讓使用者更快速的搭建項(xiàng)目,使用者可以更專注、快速的投入到業(yè)務(wù)系統(tǒng)開發(fā)中。系統(tǒng)配置、基礎(chǔ)代碼、項(xiàng)目依賴的 jar 包,甚至是開發(fā)時(shí)所用到的應(yīng)用服務(wù)器等,Spring Boot 已經(jīng)幫我們準(zhǔn)備好,只要在建立項(xiàng)目時(shí),使用構(gòu)建工具加入相應(yīng)的 Spring Boot 依賴包,項(xiàng)目即可運(yùn)行,使用者無需關(guān)心版本兼容等問題。

 Spring Boot 支持 Maven 和 Gradle 這兩款構(gòu)建工具。Gradle 使用 Groovy 語言進(jìn)行構(gòu)建腳本的編寫,與 Maven、Ant 等構(gòu)建工具有良好的兼容性。鑒于筆者使用 Maven 較多,因此本書使用 Maven 作為項(xiàng)目構(gòu)建工具。筆者成書時(shí),Spring Boot 最新的正式版本為 1.5.4,要求 Maven 版本為 3.2 或以上。

1.1.2 新建 Maven 項(xiàng)目

  在新建菜單中選擇新建“Maven Project”,填寫的項(xiàng)目信息如圖 2 - 5 所示。

圖 2 -5 新建 Maven 項(xiàng)目

  為了測(cè)試項(xiàng)目的可用性,加入 Spring Boot 的 web 啟動(dòng)模塊,讓該項(xiàng)目具有 Web 容器的功能,pom.xml 文件內(nèi)容如代碼清單 2 - 1 所示。

  代碼清單 2 -1:codes\02\env-test\pom.xml

project xmlns= http://maven.apache.org/POM/4.0.0  xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance 
 xsi:schemaLocation= http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd 
 modelVersion 4.0.0 /modelVersion 
 groupId org.crazyit.cloud /groupId 
 artifactId env-test /artifactId 
 version 0.0.1-SNAPSHOT /version 
 dependencies 
dependency 
 groupId org.springframework.boot /groupId 
 artifactId spring-boot-starter-web /artifactId 
 version 1.5.4.RELEASE /version 
 /dependency
 /dependencies 
 /project

配置完依賴后,該依賴會(huì)自動(dòng)幫我們的項(xiàng)目加上其他的 Spring 模塊以及所依賴的第三方包,例如 spring-core、sprin-beans、spring-mvc 等,除了這些模塊外,還加入了嵌入式的 Tomcat。

1.1.3 編寫啟動(dòng)類

  加入了依賴后,只需要編寫一個(gè)簡(jiǎn)單的啟動(dòng)類,即可啟動(dòng) Web 服務(wù),啟動(dòng)類如代碼清單 2 - 2 所示。

  代碼清單 2 -2:codes\02\env-test\src\main\java\org\crazyit\cloud\MyApplication.java

package org.crazyit.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);
}

 MyApplication 類使用了 @SpringBootApplication 注解,該注解聲明了該類是一個(gè) Spring Boot 應(yīng)用,該注解具有“@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan”等注解的功能。直接運(yùn)行 MyApplication 的 main 方法,看到以下輸出信息后,證明成功啟動(dòng):

2017-08-02 20:53:05.327 INFO 1976 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-08-02 20:53:05.530 INFO 1976 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-08-02 20:53:05.878 INFO 1976 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-08-02 20:53:05.885 INFO 1976 --- [ main] org.crazyit.cloud.MyApplication : Started MyApplication in 5.758 seconds (JVM running for 6.426)

  根據(jù)輸出信息可知,啟動(dòng)的 Tomcat 端口為 8080,打開瀏覽器訪問:http://localhost:8080,可以看到錯(cuò)誤頁面,表示應(yīng)用已經(jīng)成功啟動(dòng)。

1.1.4 編寫控制器

  在前面小節(jié)加入的 spring-boot-starter-web 模塊,默認(rèn)集成了 SpringMVC,因此只需要編寫一個(gè) Controller,即可實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的 HelloWord 程序,代碼清單 2 - 3 為控制器。

  代碼清單 2 -3:codes\02\env-test\src\main\java\org\crazyit\cloud\MyController.java

package org.crazyit.cloud;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@Controller
public class MyController {@GetMapping( /hello)
 @ResponseBody
 public String hello() {return  Hello World}

  代碼清單 2 - 3 中使用了 @Controller 注解來修飾 MyController,由于啟動(dòng)類中使用了 @SpringBootApplication 注解,該注解含有 @ComponentScan 的功能,因此 @Controller 會(huì)被掃描并注冊(cè)。在 hello 方法中使用了 @GetMapping 與 @ResponseBody 注解,聲明 hello 方法的訪問地址以及返回內(nèi)容。重新運(yùn)行啟動(dòng)類,打開瀏覽器并訪問以下地址:http://localhost:8080/hello,可以看到控制器的返回。

1.1.5 發(fā)布 REST WebService

 Spring MVC 支持直接發(fā)布 REST 風(fēng)格的 WebService,新建測(cè)試的對(duì)象 Person,如代碼清單 2 - 4 所示。

  代碼清單 2 -4:codes\02\env-test\src\main\java\org\crazyit\cloud\Person.java

package org.crazyit.cloud;
public class Person {
 private Integer id;
 private String name;
 private Integer age;
 public Integer getId() {
 return id;
 public void setId(Integer id) {
 this.id = id;
 public String getName() {
 return name;
 public void setName(String name) {
 this.name = name;
 public Integer getAge() {
 return age;
 public void setAge(Integer age) {
 this.age = age;

}

  修改控制器類,修改后如代碼清單 2 -5。

  代碼清單 2 -5:codes\02\env-test\src\main\java\org\crazyit\cloud\MyController.java

package org.crazyit.cloud;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {@GetMapping( /hello)
 public String hello() {
 return  Hello World 
 @RequestMapping(value =  /person/{personId} , method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
 public Person findPerson(@PathVariable( personId) Integer personId) {Person p = new Person();
 p.setId(personId);
 p.setName( Crazyit 
 p.setAge(30);
 return p;
}

 MyController 類中,將原來的 @Controller 注解修改為 @RestController,原來的 hello 方法也不需要再使用 @ResponseBody 進(jìn)行修飾,@RestController 已含有 @ResponseBody 注解。新建 findPerson 方法,該方法將會(huì)根據(jù)參數(shù) id 來創(chuàng)建一個(gè) Person 實(shí)例并返回,訪問該方法將會(huì)得到 JSON 字符串。運(yùn)行啟動(dòng)類,在瀏覽器中輸入:http://localhost:8080/person/1,可看到接口返回以下 JSON 字符串:

{id :1, name : Crazyit , age :30}

  調(diào)用 REST 服務(wù)的方式有很多,此部分內(nèi)容將在后面章節(jié)中講述。

1.2 Spring Boot 配置文件

 Spring Cloud 基于 Spring Boot 構(gòu)建,很多模塊的配置均放在 Spring Boot 的配置文件中,因此有必要了解一下 Spring Boot 的配置文件規(guī)則,為學(xué)習(xí)后面的章節(jié)打下基礎(chǔ)。

1.2.1 默認(rèn)配置文件

 Spring Boot 會(huì)按順序讀取各種配置,例如命令行參數(shù)、系統(tǒng)參數(shù)等,本章只講述配置文件的參數(shù)讀取。默認(rèn)情況下,Spring Boot 會(huì)按順序到以下目錄讀取 application.properties 或者 application.yml 文件:

 ?  項(xiàng)目根目錄的 config 目錄。

 ?  項(xiàng)目根目錄。

 ?  項(xiàng)目 classpath 下的 config 目錄。

 ?  項(xiàng)目 classpath 根目錄。

  如對(duì)以上描述有疑問,可參看圖 2 -6。

圖 2 -6 配置文件讀取順序

  圖 2 - 6 中的數(shù)字為文件的讀取順序,本小節(jié)使用的 boot-config-file 項(xiàng)目依賴了 spring-boot-starter-web 項(xiàng)目,為 pom.xml 加入以下依賴:

dependency 
 groupId org.springframework.boot /groupId 
 artifactId spring-boot-starter-web /artifactId 
 version 1.5.4.RELEASE /version 
 /dependency

1.2.2 指定配置文件位置

  如果想自己指定配置文件,可以在 Spring 容器的啟動(dòng)命令中加入?yún)?shù),例子如代碼清單 2 - 6 所示。

  代碼清單 2 -6:codes\02\boot-config-file\src\main\java\org\crazyit\boot\TestDefaultFile.java

package org.crazyit.boot;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class TestDefaultFile {public static void main(String[] args) {
 ConfigurableApplicationContext context = new SpringApplicationBuilder(TestDefaultFile.class)
 .properties(spring.config.location=classpath:/test-folder/my-config.properties)
 .run(args);
 //  輸出變量
 System.out.println(context.getEnvironment().getProperty(jdbc.user));
 }

 TestDefaultFile 類,在使用 SpringApplicationBuilder 時(shí),配置了 spring.config.location 屬性來設(shè)定需要讀取的配置文件。

1.2.3 yml 文件

 YAML 語言使用一種方便的格式的來進(jìn)行數(shù)據(jù)配置,通過配置分層、縮進(jìn),在很大程度上增強(qiáng)了配置文件的可讀性,使用 YAML 語言的配置文件以“.yml”作為后綴。代碼清單 2 - 7 為一份 yml 配置文件。

  代碼清單 2 -7:codes\02\boot-config-file\src\main\resources\my-config.yml

jdbc:
 user:
 root
 passwd:
 123456
 driver:
 com.mysql.jdbc.Driver

  在此,需要注意的是,每一行配置的縮進(jìn)要使用空格,不要使用 tab 鍵進(jìn)行縮進(jìn)。代碼清單 2 - 7 對(duì)應(yīng)的 properties 文件內(nèi)容如下:

jdbc.user=root
jdbc.passwd=123456
jdbc.driver=com.mysql.jdbc.Driver

1.2.4 運(yùn)行時(shí)指定 profiles 配置

  如果在不同的環(huán)境下激活不同的配置,可以使用 profiles,代碼清單 2 - 8 中配置了兩個(gè) profiles。

  代碼清單 2 -8:codes\02\boot-config-file\src\main\resources\test-profiles.yml

spring:
 profiles: mysql
jdbc:
 driver:
 com.mysql.jdbc.Driver
spring:
 profiles: oracle
jdbc:
 driver:
 oracle.jdbc.driver.OracleDriver

  定義了 mysql 與 oracle 兩個(gè) profiles,profiels 間使用“—”進(jìn)行分隔,在 Spring 容器啟動(dòng)時(shí),使用 spring.profiles.active 來指定激活哪個(gè) profiles,如代碼清單 2 - 9 所示。

  代碼清單 2 -9:codes\02\boot-config-file\src\main\java\org\crazyit\boot\TestProfiles.java

package org.crazyit.boot;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class TestProfiles {public static void main(String[] args) {
 ConfigurableApplicationContext context = new SpringApplicationBuilder(TestProfiles.class)
 .properties(spring.config.location=classpath:/test-profiles.yml)
 .properties(spring.profiles.active=oracle).run(args);
 //  輸出變量
 System.out.println(context.getEnvironment().getProperty(jdbc.driver));
 //  啟動(dòng)第二個(gè) Spring 容器,指定端口為 8081
 ConfigurableApplicationContext context2 = new SpringApplicationBuilder(TestProfiles.class)
 .properties(spring.config.location=classpath:/test-profiles.yml)
 .properties(spring.profiles.active=mysql).properties(server.port=8081).run(args);
 //  輸出變量
 System.out.println(context2.getEnvironment().getProperty(jdbc.driver));
}

  對(duì) Spring Boot 的配置文件有一定了解后,對(duì)后面章節(jié) Spring Cloud 的配置內(nèi)容就不會(huì)陌生。

1.2.5 熱部署

  每次修改 Java 后,都需要重新運(yùn)行 Main 方法才能生效,這樣的會(huì)降低開發(fā)效果,我們可以使用 Spring Boot 提供的開發(fā)工具來實(shí)現(xiàn)熱部署,為項(xiàng)目加上以下依賴:

dependency 
 groupId org.springframework.boot /groupId 
 artifactId spring-boot-devtools /artifactId 
 /dependency

  當(dāng) Java 文件修改后,容器會(huì)重新加載本項(xiàng)目的 Java 類。

丸趣 TV 小編主要講述了本書基礎(chǔ)環(huán)境的搭建,讀者主要掌握 Maven 的使用,本書的案例幾乎都是 Maven 項(xiàng)目。Spring Cloud 項(xiàng)目以 Spring Boot 作為基礎(chǔ)進(jìn)行構(gòu)建,大部分案例也是基于 Spring Boot,本章對(duì) Spring Boot 作了大致的講解,并且配合一個(gè) Hello World 例子來演示 Spring Boot 的便捷,學(xué)習(xí)完本章后,讀者知道 Spring Boot 的大致功能,即可達(dá)到目標(biāo)。

關(guān)于如何理解 Spring Boot 簡(jiǎn)介與配置就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計(jì)9181字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 杭锦后旗| 仁布县| 松潘县| 莱西市| 宁国市| 玛曲县| 涿州市| 攀枝花市| 休宁县| 鄱阳县| 高台县| 柘荣县| 海晏县| 新沂市| 易门县| 布尔津县| 泗水县| 昆山市| 张北县| 华安县| 孟津县| 兴业县| 琼结县| 吴忠市| 五峰| 霍林郭勒市| 潞城市| 高唐县| 南部县| 甘孜县| 遂宁市| 依安县| 凤庆县| 民乐县| 禹州市| 曲沃县| 贺州市| 罗城| 宜黄县| 延长县| 奉化市|