微服务之Spring Boot简单搭建

spring-boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它不再需要繁琐的XML配置,能够自动发现并自动处理复杂的依赖管理。Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。

Spring Boot 支持Maven和Gradle构建系统,可以打包成jar或者war。

具体使用

可以选择按照http://projects.spring.io/spring-boot/ 的说明,Maven继承org.springframework.boot 来构建系统。全新项目的话,也可以使用http://start.spring.io/ 直接下载一个创建好的工程,在IDE中直接导入即可。

使用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创建

待续

SpringBoot + JDBC

SpringBoot + Mybatis

SpringBoot + Mybatis

SpringBoot + log4j

Transactions

Spring demos