1. 程式人生 > >Spring Boot環境配置:Spring Boot+Mybatis+Gradle

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環境搭建完成。整個專案結構如下圖:
這裡寫圖片描述