參考 http://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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
這樣就完成了項目的創建,下面我們創建一個 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;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
然后現在可以直接運行 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的多個方面通過實例的方式呈現給大家。
文章列表