經(jīng)過一段時間的學(xué)習(xí),逐漸揭開了SpringBoot的面紗,接下來對其做一個總結(jié)。
SpringBoot是簡化Spring應(yīng)用開發(fā)的一個框架,整個Spring技術(shù)棧的一個大整合,J2EE開發(fā)的一站式解決方案;它的特點是約定大于配置,其內(nèi)部簡化了大部分配置。通過pom.xml配置文件,可以很輕松的添加需要的依賴,啟動器等。
在IntelliJ使用 Spring Initializer快速創(chuàng)建項目

1,pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.20.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
這是pom文件中父項目,再進一步查看其spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.20.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
發(fā)現(xiàn)真正管理Spring Boot應(yīng)用里面的所有依賴版本的地方在這spring-boot-dependencies
Spring Boot的版本仲裁中心;
以后我們導(dǎo)入依賴默認是不需要寫版本;(沒有在dependencies里面管理的依賴自然需要聲明版本號)
再往下看:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
這是spring boot的web場景啟動器,只要引入了它,就能幫我們導(dǎo)入了web模塊正常運行所依賴的組件;
2,主程序類
/**
* @SpringBootApplication 來標(biāo)注一個主程序類,說明這是一個Spring Boot應(yīng)用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
// Spring應(yīng)用啟動起來
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
@SpringBootApplication: Spring Boot應(yīng)用標(biāo)注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot就應(yīng)該運行這個類的main方法來啟動SpringBoot應(yīng)用;

@SpringBootConfiguration:Spring Boot的配置類:標(biāo)注在某個類上,表示這是一個Spring Boot的配置類;
@Configuration:配置類上來標(biāo)注這個注解;
配置類 ----- 配置文件;配置類也是容器中的一個組件;@Component
@EnableAutoConfiguration:開啟自動配置功能;
以前我們需要配置的東西,Spring Boot幫我們自動配置;@EnableAutoConfiguration告訴SpringBoot開啟自動配置功能;這樣自動配置才能生效;
3,快速測試
在src下創(chuàng)建一個controller包,新建一個HelloController類,之后運行springboot,便可以通過localhost:/8080/hello來訪問hello頁面。
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
4,配置文件
SpringBoot使用一個全局的配置文件,配置文件名是固定的;
? application.properties
? application.yml
配置文件的作用:修改SpringBoot自動配置的默認值;SpringBoot在底層都給我們自動配置好;
配置文件加載位置:
springboot 啟動會掃描以下位置的application.properties或者application.yml文件作為Spring boot的默認配置文件
–file:./config/
–file:./
–classpath:/config/
–classpath:/
優(yōu)先級由高到底,高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置;
SpringBoot會從這四個位置全部加載主配置文件;互補配置;
如何使用配置文件?
application.yml
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
- lisi
- zhaoliu
/**
* 將配置文件中配置的每一個屬性的值,映射到這個組件中
* @ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關(guān)的配置進行綁定;
* prefix = "person":配置文件中哪個下面的所有屬性進行一一映射
*
* 只有這個組件是容器中的組件,才能使用容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
<!--導(dǎo)入配置文件處理器,配置文件進行綁定就會有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@Value獲取值和@ConfigurationProperties獲取值比較
配置文件yml還是properties他們都能獲取到值;
如果說,我們只是在某個業(yè)務(wù)邏輯中需要獲取一下配置文件中的某項值,使用@Value;
如果說,我們專門編寫了一個javaBean來和配置文件進行映射,我們就直接使用@ConfigurationProperties;
==我們還可以通過spring.config.location來改變默認的配置文件位置==
項目打包好以后,我們可以使用命令行參數(shù)的形式,啟動項目的時候來指定配置文件的新位置;指定配置文件和默認加載的這些配置文件共同起作用形成互補配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
自動配置的使用技巧:
1、SpringBoot啟動會加載大量的自動配置類
2、我們看我們需要的功能有沒有SpringBoot默認寫好的自動配置類;
3、我們再來看這個自動配置類中到底配置了哪些組件;(只要我們要用的組件有,我們就不需要再來配置了)
4、給容器中自動配置類添加組件的時候,會從properties類中獲取某些屬性。我們就可以在配置文件中指定這些屬性的值;