真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何理解SpringBoot簡介與配置

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

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)由有經(jīng)驗的網(wǎng)站設(shè)計師、開發(fā)人員和項目經(jīng)理組成的專業(yè)建站團(tuán)隊,負(fù)責(zé)網(wǎng)站視覺設(shè)計、用戶體驗優(yōu)化、交互設(shè)計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都做網(wǎng)站、網(wǎng)站建設(shè)易于使用并且具有良好的響應(yīng)性。

1 Spring Boot簡介與配置

1.1 Spring Boot

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

1.1.1 Spring Boot簡介

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

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

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

1.1.2 新建Maven項目

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

如何理解Spring Boot簡介與配置

圖2-5 新建Maven項目

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

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


	4.0.0
	org.crazyit.cloud
	env-test
	0.0.1-SNAPSHOT

	
		
			org.springframework.boot
			spring-boot-starter-web
			1.5.4.RELEASE
		
	

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

1.1.3 編寫啟動類

        加入了依賴后,只需要編寫一個簡單的啟動類,即可啟動Web服務(wù),啟動類如代碼清單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注解,該注解聲明了該類是一個Spring Boot應(yīng)用,該注解具有“@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan”等注解的功能。直接運行MyApplication的main方法,看到以下輸出信息后,證明成功啟動:

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ù)輸出信息可知,啟動的Tomcat端口為8080,打開瀏覽器訪問:http://localhost:8080,可以看到錯誤頁面,表示應(yīng)用已經(jīng)成功啟動。

1.1.4 編寫控制器

        在前面小節(jié)加入的spring-boot-starter-web模塊,默認(rèn)集成了SpringMVC,因此只需要編寫一個Controller,即可實現(xià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,由于啟動類中使用了@SpringBootApplication注解,該注解含有@ComponentScan的功能,因此@Controller會被掃描并注冊。在hello方法中使用了@GetMapping與@ResponseBody注解,聲明hello方法的訪問地址以及返回內(nèi)容。重新運行啟動類,打開瀏覽器并訪問以下地址:http://localhost:8080/hello,可以看到控制器的返回。

1.1.5 發(fā)布REST WebService

        Spring MVC支持直接發(fā)布REST風(fēng)格的WebService,新建測試的對象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方法,該方法將會根據(jù)參數(shù)id來創(chuàng)建一個Person實例并返回,訪問該方法將會得到JSON字符串。運行啟動類,在瀏覽器中輸入: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會按順序讀取各種配置,例如命令行參數(shù)、系統(tǒng)參數(shù)等,本章只講述配置文件的參數(shù)讀取。默認(rèn)情況下,Spring Boot會按順序到以下目錄讀取application.properties或者application.yml文件:

        ?      項目根目錄的config目錄。

        ?      項目根目錄。

        ?      項目classpath下的config目錄。

        ?      項目classpath根目錄。

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

如何理解Spring Boot簡介與配置

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

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

		
			org.springframework.boot
			spring-boot-starter-web
			1.5.4.RELEASE
		

1.2.2 指定配置文件位置

        如果想自己指定配置文件,可以在Spring容器的啟動命令中加入?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時,配置了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對應(yīng)的properties文件內(nèi)容如下:

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

1.2.4 運行時指定profiles配置

        如果在不同的環(huán)境下激活不同的配置,可以使用profiles,代碼清單2-8中配置了兩個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兩個profiles,profiels間使用“---”進(jìn)行分隔,在Spring容器啟動時,使用spring.profiles.active來指定激活哪個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"));
		// 啟動第二個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"));
	}

}

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

1.2.5 熱部署

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

		
			org.springframework.boot
			spring-boot-devtools
		

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

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

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


分享標(biāo)題:如何理解SpringBoot簡介與配置
當(dāng)前鏈接:http://weahome.cn/article/jgdhjg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部