1. 程式人生 > >SpringBoot(1)

SpringBoot(1)

<?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註解開始進行你所做的所有配置