【Spring Boot課程】2.HelloWorld應用程式
HelloWorld應用程式
- 給maven的settings.xml配置檔案的profiles標籤新增
<profile>
<id>jdk‐1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties >
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
- 在maven中新增sprig boot相關依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId >org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 編寫一個主程式,啟動spring boot應用
package com.zhaoyi.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args){
SpringApplication.run(HelloWorldApplication.class, args);
}
}
程式探究
1、POM檔案
1 父專案
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>]
父專案才真正的管理Spring Boot應用裡面的所有依賴版本。
Spring boot的版本仲裁中心:
以後我們匯入依賴預設是不需要寫版本(沒有在dependency裡面管理的依賴自然需要宣告版本號)
2、匯入的依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1、啟動器
spring-boot-starter: spring-boot場景啟動器;如spring-boot-starter-web則幫我們匯入了web模組需要正常執行所依賴的元件。
參照官方文件我們可以發現,spring-boot-starter-*代表了一系列的功能場景,當你需要什麼具體業務需求的時候,將其匯入就可以了,比如aop、data-redis、mail、web等。他將所有的功能場景都抽出來,做成一個個的starter(啟動器),其先關的業務場景的所有依賴都會匯入進來,要用什麼功能就匯入什麼場景的啟動器。
2、主程式類
package com.zhaoyi.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args){
SpringApplication.run(HelloWorldApplication.class, args);
}
}
@SpringBootApplication SB應用標註在某個類上說明這個類是SB的主配置類,SB就應該執行這個類的main方法來啟動SB應用。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@SpringBootConfiguration SB的配置類;
標註在某個類上,表示這個類是SB的配置類。
@Configuration 配置類上來標註這個註解;
配置類就是配置檔案;配置類也是容器中的一個元件;@companent
@EnableAutoConfiguration 開啟自動配置功能;
以前我們需要在SP中配置的東西,SB幫我們自動配置,通過此配置告訴SB開啟自動配置功能。這樣,自動配置的功能才能生效。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}
@AutoConfigurationPackage 自動配置包
SP的底層註解@import,給容器中匯入一個元件。
將主配置類(@SpringBottApplication標註的類)所在包及下面所有子包裡面的所有元件掃描到SP容器。
@Import({EnableAutoConfigurationImportSelector.class}) 匯入哪些元件的選擇器;將所有需要匯入的元件以全類名的方式返回,這些元件就會被新增到容器中;
會給容器中匯入非常多的自動配置類(xxxAutoConfiguration);就是給容器中匯入這個場景需要的所有元件,並配置好這些元件。這樣就免去了我們手動編寫配置注入功能元件等的工作;
SB在啟動的時候從類路徑下的META-INFO/spring.factories中獲取EnableAutoConfiguration指定的值,將這些紙作為自動配置類匯入容器中,自動配置類就生效,幫我們進行自動配置工作;以前我們需要自己配置的東西,自動配置類都幫我們做了。
J2EE的整體解決方案和自動配置都在sprig-boot-autoconfigure.jar中了;
使用Spring Initializer快速建立SB專案
IDE都支援使用Spring的專案建立嚮導;
選擇我們需要的模組,嚮導會聯網建立SB專案;
@ResponseBody 這個類的所有方法(或者單個方法——)返回的資料直接寫給瀏覽器。
@ResponseBody寫在類上面時,大可以寫為@RestController,其等價於@[email protected];
預設生成的專案
- 主程式已經生成好了,我們只需關注自己的業務邏輯
- resounces資料夾中的目錄結構
- static:儲存所有的靜態資源:js css images;
- templates:儲存所有的模板頁面;(SB預設jar包,使用嵌入式頁面;可以使用模板引擎——freemarker、thymeleaf)
- application.properties SB應用的配置檔案;SB的一些預設配置可以在這裡進行修改。