天天看點

SpringBoot 01.建立一個簡單的SpringBoot程式

編寫一個簡單的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);就是給容器中導入這個場景需要的所有元件,并配置好這些元件;

SpringBoot 01.建立一個簡單的SpringBoot程式

有了自動配置類,免去了我們手動編寫配置注入功能元件等的工作;

​ SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

==Spring Boot在啟動的時候從類路徑下的META-INF/spring.factories中擷取EnableAutoConfiguration指定的值,将這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;==以前我們需要自己配置的東西,自動配置類都幫我們;

J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;

繼續閱讀