大綱
下面您将會看到:
- Spring Boot 快速入門案例
- Spring Boot 整合持久層開發
- Spring Boot 整合控制層開發
- Spring Boot 整合視圖層開發
- Spring Boot 整合安全架構
- Spring Boot 整合定時任務
- Spring Boot 測試
- Spring Boot 自動裝配原理
導圖如下
介紹
spring boot 是用來簡化原先的應用開發,屬于一種輕量級架構,程式員不需要編寫大量的配置檔案,即可以運作起來應用。
spring boot 有如下特性
1、 spring boot 簡單易上手
2、 spring boot 内嵌 tomcat 部署友善
3、 spring boot 可以零配置
安裝
這裡使用 idea 向導建構 spring boot 應用
選擇建立應用,選擇 spring Initializr
選擇坐标
選擇 Developer Tools 選項中的 Spring boot DevTools , lombook, Spring Configuration Processor 其中 Spring boot DevTools 為spring boot 額外提供的開發工具,lombook為簡化POJO 類的 get set 方法,Spring Configuration Processor 用于進行 Spring boot 應用配置的讀取。
選擇如下
由于是 web 應用,需要選擇 web 選項,選擇 Spring Web Starter 用于為該web應用添加啟動類。
選擇如下 如圖 1 - 4
再次選擇 sql 選項。選擇 MyBatis Framework 這裡持久層架構使用 MyBatis
選擇 Project name 和 Project location 如圖 1 - 5
選擇自動加載 maven 即 Enable Auto-Import 如圖 1 - 6
此時建立目錄如下 如圖 1 - 7
各目錄詳細解釋
.idea 目錄: idea 編譯器的配置目錄,儲存Idea的配置檔案
.mvn 目錄: 用于對 maven 的相關配置
src 目錄 儲存 項目源代碼
.gitignore 檔案 用于 git 檔案檔案上傳過濾檔案
HELP.md 幫助文檔
mvnw 檔案 Java 項目的腳本啟動檔案 linux 直接運作 mvnw 即可啟動,windows 運作 mvnw.cmd 檔案 即可啟動
pom.xml 檔案 用于進行 maven 的依賴
.imi 檔案 用于進行該項目的 idea 配置
連接配接資料庫
建立一張測試表,sql 語句如下 如 代碼 1 - 8
/*
Navicat Premium Data Transfer
Source Server : t
Source Server Type : MySQL
Source Server Version : 50718
Source Host : cdb-1yfd1mlm.cd.tencentcdb.com:10056
Source Schema : test
Target Server Type : MySQL
Target Server Version : 50718
File Encoding : 65001
Date: 25/08/2019 02:50:49
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
将 resources 目錄下的 application.properties 檔案名更改為 application.yml
Spring boot 配置相關資料源如下
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///test
username: root
password:
編寫持久層
建立 POJO Test 類
package com.example.ming.POJO;
import lombok.Data;
@Data
public class Test {
private String id;
private String name;
}
建立 Mapper 如代碼 1 - 10
package com.example.ming.mapper;
import com.example.ming.POJO.Test;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface TestMapper {
@Select("SELECT * FROM test")
public List<Test> findAll() throws Exception;
}
該 Mapper 需要添加 @Mapper 注解,表明是 Mybatis 的 mapper
啟動類添加掃描注解 如 代碼 1 - 11
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
@SpringBootApplication
@MapperScan("com.example.ming.mapper")
public class MingApplication {
public static void main(String[] args) {
SpringApplication.run(MingApplication.class, args);
}
}
編寫 service 層
package com.example.ming.controller;
import com.example.ming.POJO.Test;
import com.example.ming.mapper.TestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Service("TestService")
public class TestController {
@Autowired
private TestMapper testMapper;
public List<Test> findAll()throws Exception{
return testMapper.findAll();
}
}
添加 Service 注解 表明該 Service 名稱為 TestService 其對象管理交由 Spring 容器進行處理。添加 Autowired 注解 , 表明 Spring 容器進行自動裝配 TestMapper 對象 。
編寫 Controller 層
package com.example.ming.controller;
import com.example.ming.POJO.Test;
import com.example.ming.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/Test")
public class TestController {
@Autowired
private TestService testService;
@RequestMapping(value = "/findAll", method = RequestMethod.GET)
public List<Test> findAll()throws Exception{
return testService.findAll();
}
}
添加注解 RestController 表明是一個傳回 Json 資料格式的 Controller
添加注解 RequestMapper 表明此類是在 Test 連結下
類方法添加注解 RequestMapper 表明此類是在 Test 連結下的 findAll 連結, 接收的方法為 GET 方法。
運作應用
運作應用 main 方法
通路 連結
http://localhost:8080/Test/findAll結果如圖
此時,若能顯示出 json 資料,表明整個應用已經啟動完成。