1. 程式人生 > >SpringBoot 入門(一)

SpringBoot 入門(一)

1. 什麼是SpringBoot?

  SpringBoot是一個快速開發框架,能夠幫我們快速整合第三方框架(Maven依賴關係##Maven繼承),完全採用註解化,簡化XML配置,內建嵌入Http伺服器(Tomcat、Jetty),預設嵌入Tomcat伺服器。最終以java應用程式進行執行。(SpringBoot專案中沒有web.xml)

 

2. SpringBoot與SpringCloud的關係

  SpringCloud是一套目前比較完整的微服務框架,功能非常強大。註冊中心、客戶端呼叫工具、服務治理(負載均衡、斷路器、分佈配置中心、閘道器、服務鏈路、訊息匯流排等)

  關係:SpringBoot + SpringCloud 實現微服務開發,使用Springmvc實現微服務介面

     SpringBoot 實現快速開發

 

3. SpringBoot與SpringMVC的關係

  SpringBoot  web元件集成了SpringMVC框架。

 

4. 用SpringBoot寫一個 HelloWorld

  •   新建一個Maven工程

 

          

 

  •  在pom.xml中新增依賴資訊
<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.wanwei</groupId> <artifactId>springboot2.0-helloword</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- spring-boot-starter-parent 整合第三方常用框架依賴資訊(各種依賴資訊)
--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <!-- spring-boot-starter-web是springboot整合SpringMVC 實現原理:Maven依賴繼承關係 --> <!-- 相當於把第三方常用maven依賴資訊在parent專案中已經封裝好了,使用springboot提供依賴資訊關聯整合的jar包 --> <!-- springboot 中快速處理原理(Maven子父依賴關係),springboot對常用的依賴資訊進行封裝 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 因為parent裡面已經封裝了版本號,所以這裡不需要再寫版本號 --> </dependency> </dependencies> </project>
  •  建立一個Controller

 

package com.wanwei.index.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 *SpringBoot啟動原理:SpringMVC註解方式啟動,內嵌http伺服器(預設是Tomcat)
@EnableAutoConfiguration註解作用:開啟自動配置,預設只掃描當前類 *
*/ @RestController @EnableAutoConfiguration public class MemberController { //RestController註解表示該類的所有方法都返回json格式 @RequestMapping("/memberIndex") public String memberIndex(){ return "SpringBoot的第一個案例"; } public static void main(String[] args) { //整個程式的入口,啟動SpringBoot SpringApplication.run(MemberController.class, args); } }

  這樣一個簡單的SpringBoot Holloworld就寫好了,執行後在瀏覽器訪問:http://localhost:8080/memeberIndex

 


5. @ComponentScan 註解

  上面的專案中只有一個Controller,但我們實際開發的專案中往往是有多個Controller,而 @EnableAutoConfiguration 註解只掃描當前類,這時候我們可以新建一個類將啟動程式碼抽取出來,並使用 @ComponentScan 註解設定掃包範圍。

        

 

package com.wanwei.index.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.bind.annotation.RestController;
/**
 * 
 * 將啟動程式碼單獨出來執行
 * @ComponentScan註解作用:包掃描器,設定掃包範圍
 */
@RestController
@EnableAutoConfiguration
@ComponentScan("com.wanwei.index.controller")
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

這時候我們再增加一個Controller

  

packagecom.wanwei.index.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController {
    @RequestMapping("/index")
    public String index(){
        return "SpringBoot2.0 index";
    }
    public static void main(String[] args) {
        SpringApplication.run(IndexController.class, args);
    }
}

 

  執行後在瀏覽器訪問:http://localhost:8080/memeberIndex 和 http://localhost:8080/index 都可以成功。

 

[email protected] 註解

  在實際專案中不同的Controller一般會有不同的包,那我們在設定掃包範圍時就需要這麼寫:@ComponentScan(basePackage = {"com.wanwei.index.controller","com.wanwei.order.controller"})但是如果包太多這樣寫又很麻煩,這時候我們就可以使用@SpringBootApplication註解,(它的作用其實就等同於@EnableAutoConfiguration + @ComponentScan),預設掃描當前包和當前包的同級包、子包。

  •   新建一個包,在此包下建立一個Controller,然後把啟動類App放在com.wanwei包下(保證了啟動類和其他Controller類都在同級包下)

          

 

 

package com.wanwei.order.controller;

import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrderController { @RequestMapping("/order") public String order(){ return "使用@SpringApplication註解"; } public static void main(String[] args) { SpringApplication.run(OrderController.class, args); } }
  •   在啟動Controller的類中註釋掉@EnableAutoConfiguration 和 @ComponentScan,新增@SpringBootApplication註解
package com.wanwei;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
/**
 * 
 * 將啟動程式碼單獨出來執行
 * @ComponentScan註解作用:設定掃包範圍
 */
//@EnableAutoConfiguration
//@ComponentScan("com.wanwei.index.controller")
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

 

  執行程式碼,所有頁面都能訪問成功。