Spring Boot環境配置:Spring Boot+Mybatis+Gradle
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。簡言之就是,約定大於配置。
突出特點有:
1. 建立獨立的Spring應用程式
2. 嵌入的Tomcat,無需部署WAR檔案
3. 通過各種starter,簡化專案依賴配置
3. 自動配置Spring
4. 提供一系列執行監控手段,如指標,健康檢查和外部配置
6. 無需程式碼生成,也不需要XML配置
下面看看如何快速配置springboot腳手架工程。以主要配置檔案為說明線索。
build.gradle
首先是依賴檔案,spring boot 支援gradle和maven。這裡採用gradle舉例,maven的只有格式的差異,引用的包都是一樣的。
如下:
buildscript {
ext {
springBootVersion = '1.5.3.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion} ")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'war'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
configurations {
providedRuntime
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-aop' )
compile('org.apache.cxf:cxf-spring-boot-starter-jaxrs:3.1.11')
compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0')
compile('org.springframework.boot:spring-boot-starter-validation')
compile('org.springframework.boot:spring-boot-starter-web')
runtime('org.springframework.boot:spring-boot-devtools')
runtime('com.h2database:h2')
runtime('mysql:mysql-connector-java')
/*providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')*/
testCompile('org.springframework.boot:spring-boot-starter-test')
}
其中,springBootVersion 指定spring boot 的版本。
最主要的是dependencies,裡面列出工程依賴的包,和maven的dependencies標籤功能是一直的,可是在配置寫法上簡潔了很多。
application.yml
這個檔案是spring boot工程的主要配置檔案,支援application.yml和application.properties兩種形式。兩種方式各有優勢,yml層級明確,properties寫法傳統,簡單。
資料庫連線的配置資訊需要定義在這裡,在build.gradle檔案裡,若引用了org.mybatis.spring.boot:mybatis-spring-boot-starter,則資料庫連線資訊就必須配置,因為spring boot採用約定的方式,配置org.mybatis.spring.boot:mybatis-spring-boot-starter之後,系統就認為需要資料庫,如果不配置的話,則在啟動會資料庫連線異常,導致無法啟動。
當然,application.yml的可配置資訊有很多,如下面配置的日誌輸出資訊。或者spring boot預設埠是8080,可以通過server:port: 9000改為9000,等等。
這裡示例如下,配置了資料庫連線資訊,mybatis配置和日誌輸出。
spring:
# 資料庫配置
datasource:
url: jdbc:mysql://localhost/world
username: root
password: root
driver-class-name: org.gjt.mm.mysql.Driver
# mybatis配置
mybatis:
mapper-locations: classpath*:mapper/*.xml
logging:
level: debug
file: logs/mdesk.log
資料庫建立
這不多說,建個測試資料庫,並和上面配置的資料庫連線保持一致。
mybatis
因持久化層採用mybatis,所以生成mybatis的mapping檔案和實體類,這些可以藉助mybatis提供的工具自動生成,不是側重點,不多介紹。
如下是生成的示例,從中也可以看出我的測試庫的表結構。
CountryMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mungo.mdesk.dao.mapper.CountryMapper">
<!--<cache type="com.wooyoo.learning.util.RedisCache"/>-->
<select id="select" resultType="com.mungo.mdesk.domain.Country">
SELECT * FROM Country WHERE code = #{code} LIMIT 1
</select>
</mapper>
CountryMapper.java
package com.mungo.mdesk.dao.mapper;
import com.mungo.mdesk.domain.Country;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Created by wangxx on 2017/6/1.
*/
@Mapper
public interface CountryMapper {
Country select(@Param("code") String code);
}
Country.java
package com.mungo.mdesk.domain;
/**
* Created by wangxx on 2017/6/27.
*/
public class Country {
public String code;
public String name;
public String continent;
public String region;
public String surfaceArea;
public String indepYear;
public String population;
public String lifeExpectancy;
public String gNP;
public String gNPOld;
public String localName;
public String governmentForm;
public String headOfState;
public String capital;
public String code2;
....getter/setter
}
Spring Boot啟動程式碼
SpringBoot的啟動方式,不用多說,main()方法直接啟動,工程建立後會有一個**Application.java的檔案,裡面就一個main方法,類一般有@SpringBootApplication。
下面定義一個簡單的Controller測試請求。
CountryController.java
package com.mungo.mdesk.controller;
import com.mungo.mdesk.dao.mapper.CountryMapper;
import com.mungo.mdesk.dao.mapper.ProductMapper;
import com.mungo.mdesk.domain.Country;
import com.mungo.mdesk.domain.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by wangxx on 2017/6/1.
*/
@RestController
@RequestMapping("/country")
public class CountryController {
@Autowired
private CountryMapper countryMapper;
@GetMapping("/{code}")
public Country getProductInfo(@PathVariable("code") String code) {
// TODO
Country country = countryMapper.select(code);
return country;
}
}
很簡單,定義一個/country路由,後面通過url傳遞引數,通過解析傳過來的引數,查詢資料裡相關國家資訊並直接以json返回。因為使用了@RestController註解。若要返回頁面使用@Controller註解即可。
至此,Spring Boot+Mybatis+Gradle環境搭建完成。整個專案結構如下圖: