1. 程式人生 > >微服務之Spring Boot 簡單搭建

微服務之Spring Boot 簡單搭建

spring-boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。它不再需要繁瑣的XML配置,能夠自動發現並自動處理複雜的依賴管理。Spring Boot就是一些庫的集合,它能夠被任意專案的構建系統所使用。

Spring Boot 支援Maven和Gradle構建系統,可以打包成jar或者war。

具體使用

使用Maven建立

http://start.spring.io/ 可以選擇Maven和Gradle 兩種方式構建,並提供了一些常用的庫。

這裡選擇了,web, jdbc,mysql,redis,選擇好了之後直接generate,即可開始下載建立的工程。

下載後解壓,在IntelliJ IDE中 new->Project from Existing Source 匯入即可(注意使用maven選項)。

自動建立的pom.xml內容為:

<?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.znn</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>1.4.0.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-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

初始化完成後,直接點執行,因為在pom裡面配置了mysql,而現在並沒有給mysql設定dataSource,所以這裡會報錯。在Spring Boot中是在src-resource-application.properties 裡設定DataSource。

application.properties:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/database
spring.datasource.username=root
spring.datasource.password=

現在就能夠正常啟動Spring Boot了。

現在由於還沒有配置controller,所以在開啟localhost的時候會提示沒有沒有找到mapping。

我們建立一個Controller,裡面定義兩個介面,一個返回字串,一個介面返回json:

package com.znn.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;

@Controller
public class TestController {

    @RequestMapping("/")
    @ResponseBody
    String home(){
        return "Hello Spring Boot!!";
    }

    @RequestMapping("/map")
    @ResponseBody
    HashMap<String, Object> map(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("code", 100);
        map.put("msg", "success");
        return map;
    }
}

再次執行,開啟 http://localhost:8080/ 就可以看到打印出了 Hello Spring Boot!!

預設的打包方式是jar,我們可以使用mvn直接打包:

mvn clean package

打好的jar包存放在target目錄下,可以直接使用

java -jar target/demo-0.0.1-SNAPSHOT.jar

來執行專案。通過這裡可以看出來,Spring Boot相比Spring 去除了複雜的xml配置,更加簡便快捷。

Spring Boot當然也支援war的形式打包,我們需要修改pom.xml中的packaging為war,然後還需要新增tomcat的支援。

修改後的pom.xml:

<?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.znn</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.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-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

執行過程同上。

使用Gradle建立

待續

LINK