編寫一個簡單的SpringBoot程式,功能是編寫一個控制器,向前台傳回一個字元串輸出到浏覽器中。
第一步:配置maven依賴。pom檔案中值加載web啟動器。
<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.springboot01</groupId>
<artifactId>springboot_01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<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>
</project>
spring-boot-starter:spring-boot場景啟動器;幫我們導入了web子產品正常運作所依賴的元件;
Spring Boot将所有的功能場景都抽取出來,做成一個個的starters(啟動器),隻需要在項目裡面引入這些starter相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啟動器
第二步:編寫控制器類 ```java package org.springboot01; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class Controller01 { @RequestMapping("/hello")//攔截路徑請求 @ResponseBody//将傳回的資料直接列印到浏覽器中 public String hello(){ return "hello"; } } ``` 第三步:編寫啟動類。 @SpringBootApplication:springboot 啟動類注解 SpringApplication.run(SpringBoot01.class , args);運作springboot程式,預設啟動Tomcat。端口預設8080. ```java package org.springboot01; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBoot01 { public static void main(String[] args) { SpringApplication.run(SpringBoot01.class , args); } } ``` @SpringBootApplication: Spring Boot應用标注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot就應該運作這個類的main方法來啟動SpringBoot應用;
第三步: 啟動後,控制台會列印spring圖示和Tomcat started on port(s): 8080 (http)
在浏覽器中輸入測試位址:http://127.0.0.1:8080/hello
頁面中顯示hello 資訊表示你已經成功釋出了一個springboot項目。
@SpringBootApplication: Spring Boot應用标注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot就應該運作這個類的main方法來啟動SpringBoot應用;
@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:Spring Boot的配置類;
标注在某個類上,表示這是一個Spring Boot的配置類;
@Configuration:配置類上來标注這個注解;
配置類 ----- 配置檔案;配置類也是容器中的一個元件;@Component
@EnableAutoConfiguration:開啟自動配置功能;
以前我們需要配置的東西,Spring Boot幫我們自動配置;@EnableAutoConfiguration告訴SpringBoot開啟自動配置功能;這樣自動配置才能生效;
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
@AutoConfigurationPackage:自動配置包
@Import(AutoConfigurationPackages.Registrar.class):
Spring的底層注解@Import,給容器中導入一個元件;導入的元件由AutoConfigurationPackages.Registrar.class;
将主配置類(@SpringBootApplication标注的類)的所在包及下面所有子包裡面的所有元件掃描到Spring容器;
@Import(EnableAutoConfigurationImportSelector.class);
給容器中導入元件?
EnableAutoConfigurationImportSelector:導入哪些元件的選擇器;
将所有需要導入的元件以全類名的方式傳回;這些元件就會被添加到容器中;
會給容器中導入非常多的自動配置類(xxxAutoConfiguration);就是給容器中導入這個場景需要的所有元件,并配置好這些元件;
![](/image/images/%E6%90%9C%E7%8B%97%E6%88%AA%E5%9B%BE20180129224104.png)
有了自動配置類,免去了我們手動編寫配置注入功能元件等的工作;
SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
==Spring Boot在啟動的時候從類路徑下的META-INF/spring.factories中擷取EnableAutoConfiguration指定的值,将這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;==以前我們需要自己配置的東西,自動配置類都幫我們;
J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;