SpringBoot(1)
阿新 • • 發佈:2018-11-08
<?xml version="1.0" encoding="UTF-8"?>
<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> com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework. boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置檔案
test
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping
public String sayHello(){
return "hello";
}
}
@Controller和RestController的區別
@RestController註解相當於@ResponseBody + @Controller合在一起的作用
使用@Controller 註解,在對應的方法上,檢視解析器可以解析return 的jsp,html頁面,並且跳轉到相應頁面
若返回json等內容到頁面,則需要加@ResponseBody註解
@RestController註解,相當於@[email protected]兩個註解的結合,返回json資料不需要在方法前面加@ResponseBody註解了,但使用@RestController這個註解,就不能返回jsp,html頁面,檢視解析器無法解析jsp,html頁面
最基本的SpringBoot
所有的springboot application啟動類都需要在類級別上加上@SpringBootApplication註解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String sayHello(String name){
return "hello" + name;
}
}
輸入網址http://localhost:8080/hello?name=World,就會在網頁中顯示
@Configuration,@EnableAutoConfiguration,@ComponentScan,由於這些註解一般都是一起使用,spring boot提供了一個統一的註解@SpringBootApplication,SpringBootApplication開啟元件掃描和自動配置
@SpringBootApplication = (預設屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan
Spring的@Configuration:標明該類使用Spring基於Java的配置。雖然本書不會寫太多配置,但我們會更傾向於使用基於Java而不是XML的配置
Spring的@ComponentScan:啟用元件掃描,這樣你寫的Web控制器類和其他元件才能被自動發現並註冊為Spring應用程式上下文裡的Bean。本章稍後會寫一個簡單的Spring MVC控制器,使用@Controller進行註解,這樣元件掃描才能找到它
Spring Boot 的 @EnableAutoConfiguration : 這 個 不 起 眼 的 小 注 解 也 可 以 稱 為@Abracadabra①,就是這一行配置開啟了Spring Boot自動配置的魔力,讓你不用再寫成篇的配置了
@Configuration:提到@Configuration就要提到他的搭檔@Bean。使用這兩個註解就可以建立一個簡單的spring配置類,可以用來替代相應的xml配置檔案。
@Configuration的註解類標識這個類可以使用Spring IoC容器作為bean定義的來源。@Bean註解告訴Spring,一個帶有@Bean的註解方法將返回一個物件,該物件應該被註冊為在Spring應用程式上下文中的bean。
@EnableAutoConfiguration:能夠自動配置spring的上下文,試圖猜測和配置你想要的bean類,通常會自動根據你的類路徑和你的bean定義自動配置。
@ComponentScan:會自動掃描指定包下的全部標有@Component的類,並註冊成bean,當然包括@Component下的子註解@Service,@Repository,@Controller。
SpringApplication.run(Application.class , args)的解釋,負責啟動引導應用程式
這個就是springboot的啟動命令,執行main,執行這一句, SpringApplication是一個定義好的類。run的引數是當前類的class,和main的引數,他會找到上面的springbootapplication註解開始進行你所做的所有配置