天天看點

Spring Boot 入門

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/catoop/article/details/50501664

一、簡介

Spring 官方網站本身使用Spring 架構開發,随着功能以及業務邏輯的日益複雜,應用伴随着大量的XML配置檔案以及複雜的Bean依賴關系。

随着Spring 3.0的釋出,Spring IO團隊主鍵開始擺脫XML配置檔案,并且在開發過程中大量使用“約定優先配置”(convention over configuration)的思想來擺脫Spring架構中各種複雜的配置,衍生了Java Config。

Spring Boot正是在這樣的一個背景下被抽象出來的開發架構,它本身并不提供Spring架構的核心特性以及擴充功能,隻是用于快速、靈活地開發新一代基于Spring架構的應用程式。也就是說,它并不是用來替代Spring的解決方案,而是和Spring架構緊密結合用于提升Spring開發者體驗的工具。同時它內建了大量常用的第三方庫配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot應用中這些第三方庫幾乎可以零配置的開箱即用(out-of-the-box),大部分的Spring Boot應用都隻需要非常少量的配置代碼,開發者能夠更加專注于業務邏輯。

該項目旨在幫助開發者更容易地建立基于Spring的應用程式和服務,使得現有的和新的Spring開發者能夠最快速地獲得所需要的Spring功能。

Spring Boot不生成代碼,且完全不需要XML配置。其主要目标如下:

- 為所有的Spring開發工作提供一個更快、更廣泛的入門經驗。

- 開箱即用,你也可以通過修改預設值來快速滿足你的項目的需求。

- 提供了一系列大型項目中常見的非功能性特性,如嵌入式伺服器、安全、名額,健康檢測、外部配置等。

部落客準備寫一組 Spring-Boot 入門的文章,僅為了抛磚引玉,讓需要的同學可以盡快了解如何使用Spring-Boot,内容參考官網和網上的資料(

http://projects.spring.io/spring-boot/

)。

下面是目錄:

Spring-Boot 入門

Spring-Boot Controller

Spring-Boot Servlet

Spring-Boot 過濾器、監聽器

Spring-Boot 攔截器

Spring-Boot 靜态資源處理

Spring-Boot 啟動加載資料

Spring-Boot 日志記錄

Spring-Boot JDBC 連接配接資料庫

Spring-Boot JPA 連接配接資料庫

Spring-Boot MyBatis 連接配接資料庫

Spring-Boot 連接配接資料庫 - 多資料源

Spring-Boot Shiro 權限管理

Spring-Boot 內建Shiro和CAS

Spring-Boot 環境變量讀取 和 屬性對象的綁定

Spring-Boot 動态資料源(多資料源自動切換)

Spring-Boot 事務的使用

Spring-Boot 部署與服務配置

開發工具:Spring Tool Suite v_3.7.2(簡稱STS)

官網位址:

http://spring.io/tools/sts

二、入門執行個體 - HelloWorld

File > New > Spring Starter Project

Next > Finish

項目建立完成:

可以看出,項目源碼就一個Java類,在pom.xml中有spring-boot-starter-web的依賴。

SpringBootSampleApplication.java

package org.springboot.sample;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootSampleApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootSampleApplication.class, args);
    }
}           

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>org.springboot.sample</groupId>
    <artifactId>spring-boot-sample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-sample</name>
    <description>Spring Boot Sample Web Application</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>           

這樣就完成了項目的建立,下面我們建立一個 HelloController.java 定義3個方法

package org.springboot.sample.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping
    public String hello() {
        return "Hello Spring-Boot";
    }

    @RequestMapping("/info")
    public Map<String, String> getInfo(@RequestParam String name) {
        Map<String, String> map = new HashMap<>();
        map.put("name", name);
        return map;
    }

    @RequestMapping("/list")
    public List<Map<String, String>> getList() {
        List<Map<String, String>> list = new ArrayList<>();
        Map<String, String> map = null;
        for (int i = 1; i <= 5; i++) {
            map = new HashMap<>();
            map.put("name", "Shanhy-" + i);
            list.add(map);
        }
        return list;
    }
}           

然後現在可以直接運作 SpringBootSampleApplication 的main方法,和執行普通java程式一樣。

然後可以看到spring-boot 内置server容器(預設為Tomcat),這一切spring-boot 都幫我們做好了。

控制台輸出内容 Started SpringBootSampleApplication in 7.358 seconds (JVM running for 9.154) 表示服務已經啟動。

在浏覽器輸入我們3個請求便可看到結果。

http://localhost:8080/hello

輸出:Hello Spring-Boot

http://localhost:8080/hello/info?name=shanhy

輸出:{“name”:”shanhy”}

http://localhost:8080/hello/list

輸出:[{“name”:”Shanhy-1”},{“name”:”Shanhy-2”},{“name”:”Shanhy-3”},{“name”:”Shanhy-4”},{“name”:”Shanhy-5”}]

通過我們的Hello執行個體,相信大家一目了然,可謂spring-boot建立一個項目如此簡單,完全可以在幾分鐘内将服務啟動。

spring-boot抛棄繁瑣的配置,讓開發人員更專注與業務邏輯的實作。後面幾篇文章将會對spring-boot的多個方面通過執行個體的方式呈現給大家。