1. 程式人生 > >spring-boot系列:初試spring-boot

spring-boot系列:初試spring-boot

部署父工程

<?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.hadu.try</groupId> <artifactId>try-spring-boot</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>try-web</module> </modules> <!--
Inherit defaults from Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> </parent> </project>

  建立一個父工程,方便接下來分模組嘗試spring boot。在父工程中引入spring boot的預設pom:spring-boot-starter-parent。

建立web子模組

pom配置

<?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">
    <parent>

        <artifactId>try-spring-boot</artifactId>
        <groupId>com.hadu.try</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>try-web</artifactId>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

引入spring boot的web boot,接下來去定義controller就可以快速建立一個web程式,完全避開web複雜的xml配置。

第一個controller

/**
 * Created by lili on 16/5/16.
 */
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
@EnableAutoConfiguration
public class SampleController {

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

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

spring boot的神奇之處就在這裡,我們完全可以按照普通java程式一樣去run,不需要將web應用打包到諸如tomcat的web容器中就可以啟動web應用了。

@EnableAutoConfiguration 這個註解讓spring boot根據你引入jar的依賴關係去猜測你需要構建的程式,由於spring-boot-starter-web添加了Tomcat和Spring MVC

的jar,所以這裡spring boot就認為你要構建一個web應用,所以會自動為你配置web相關的一些配置。

效果演示

run起來的效果如下:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.3.5.RELEASE)

2016-05-17 11:25:28.359  INFO 1571 --- [           main] SampleController                         : Starting SampleController on Lilis-MacBook-Pro.local with PID 1571 (started by lili in /Users/lili/百度雲同步盤/gitDir/try-spring-boot)
2016-05-17 11:25:28.364  INFO 1571 --- [           main] SampleController                         : No active profile set, falling back to default profiles: default
2016-05-17 11:25:28.522  INFO 1571 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]17baae6e: startup date [Tue May 17 11:25:28 CST 2016]; root of context hierarchy
2016-05-17 11:25:31.307  INFO 1571 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-05-17 11:25:31.335  INFO 1571 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat
2016-05-17 11:25:31.337  INFO 1571 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.33
2016-05-17 11:25:31.621  INFO 1571 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2016-05-17 11:25:31.622  INFO 1571 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3109 ms
2016-05-17 11:25:32.243  INFO 1571 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2016-05-17 11:25:32.252  INFO 1571 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2016-05-17 11:25:32.253  INFO 1571 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2016-05-17 11:25:32.253  INFO 1571 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2016-05-17 11:25:32.253  INFO 1571 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
2016-05-17 11:25:32.925  INFO 1571 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]17baae6e: startup date [Tue May 17 11:25:28 CST 2016]; root of context hierarchy
2016-05-17 11:25:33.178  INFO 1571 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String SampleController.home()
2016-05-17 11:25:33.181  INFO 1571 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-05-17 11:25:33.181  INFO 1571 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-05-17 11:25:33.244  INFO 1571 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-05-17 11:25:33.244  INFO 1571 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-05-17 11:25:33.302  INFO 1571 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-05-17 11:25:33.490  INFO 1571 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2016-05-17 11:25:33.618  INFO 1571 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-05-17 11:25:33.624  INFO 1571 --- [           main] SampleController                         : Started SampleController in 6.365 seconds (JVM running for 7.385)

下面來看看這個專案的依賴:

[INFO] com.hadu.try:try-web:jar:1.0-SNAPSHOT
[INFO] \- org.springframework.boot:spring-boot-starter-web:jar:1.3.5.RELEASE:compile
[INFO]    +- org.springframework.boot:spring-boot-starter:jar:1.3.5.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot:jar:1.3.5.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.3.5.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.3.5.RELEASE:compile
[INFO]    |  |  +- ch.qos.logback:logback-classic:jar:1.1.7:compile
[INFO]    |  |  |  +- ch.qos.logback:logback-core:jar:1.1.7:compile
[INFO]    |  |  |  \- org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO]    |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.21:compile
[INFO]    |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.21:compile
[INFO]    |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.21:compile
[INFO]    |  +- org.springframework:spring-core:jar:4.2.6.RELEASE:compile
[INFO]    |  \- org.yaml:snakeyaml:jar:1.16:runtime
[INFO]    +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.3.5.RELEASE:compile
[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.0.33:compile
[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.0.33:compile
[INFO]    |  +- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:8.0.33:compile
[INFO]    |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.0.33:compile
[INFO]    +- org.springframework.boot:spring-boot-starter-validation:jar:1.3.5.RELEASE:compile
[INFO]    |  \- org.hibernate:hibernate-validator:jar:5.2.4.Final:compile
[INFO]    |     +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO]    |     +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO]    |     \- com.fasterxml:classmate:jar:1.1.0:compile
[INFO]    +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.6:compile
[INFO]    |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.6:compile
[INFO]    |  \- com.fasterxml.jackson.core:jackson-core:jar:2.6.6:compile
[INFO]    +- org.springframework:spring-web:jar:4.2.6.RELEASE:compile
[INFO]    |  +- org.springframework:spring-aop:jar:4.2.6.RELEASE:compile
[INFO]    |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO]    |  +- org.springframework:spring-beans:jar:4.2.6.RELEASE:compile
[INFO]    |  \- org.springframework:spring-context:jar:4.2.6.RELEASE:compile
[INFO]    \- org.springframework:spring-webmvc:jar:4.2.6.RELEASE:compile
[INFO]       \- org.springframework:spring-expression:jar:4.2.6.RELEASE:compile

相關推薦

spring-boot系列初試spring-boot

部署父工程 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XM

Spring Boot 系列最新版優雅停機詳解

> 愛生活,愛編碼,本文已收錄[架構技術專欄](http://www.jiagoujishu.com/)關注這個喜歡分享的地方。 開源專案: - 分散式監控(Gitee GVP最有價值開源專案 ):https://gitee.com/sanjiankethree/cubic - 攝像頭視訊流採集:

Spring Boot 系列日誌動態配置詳解

>世界上最快的捷徑,就是腳踏實地,本文已收錄[架構技術專欄](http://www.jiagoujishu.com/)關注這個喜歡分享的地方。 開源專案: - 分散式監控(Gitee GVP最有價值開源專案 ):https://gitee.com/sanjiankethree/cubic - 攝像頭視

Spring Boot (二)關於Spring Boot的pom 配置。spring-boot-starter-parent.pom

關於依賴 簡介   Spring Boot 自帶了一個它能夠支援的依賴表,在用的時候不需要提供這些依賴的版本資訊,Spring Boot會幫你管理好,更新Spring Boot的時候,依賴也會跟著更新,從而保持一致。   這個依賴list包含了Spring Bo

Spring Boot2(四)使用Spring Boot多資料來源實現讀寫分離

前言 實際業務場景中,不可能只有一個庫,所以就有了分庫分表,多資料來源的出現。實現了讀寫分離,主庫負責增改刪,從庫負責查詢。這篇文章將實現Spring Boot如何實現多資料來源,動態資料來源切換,讀寫分離等操作。 程式碼部署 快速新建專案spring-boot專案 1、新增maven依賴 <depen

Spring Boot2(五)使用Spring Boot結合Thymeleaf模板引擎使用總結

一、Thymeleaf概述 一般來說,常用的模板引擎有JSP、Velocity、Freemarker、Thymeleaf 。 SpringBoot推薦的 Thymeleaf – 語法更簡單,功能更強大; Thymeleaf是一種Java XML/XHTML/HTML5模板引擎,可以在Web和非Web環境中使用

Spring Boot2(六)使用Spring Boot整合AOP面向切面程式設計

一、前言 眾所周知,spring最核心的兩個功能是aop和ioc,即面向切面和控制反轉。本文會講一講SpringBoot如何使用AOP實現面向切面的過程原理。 二、何為aop ​ aop全稱Aspect Oriented Programming,面向切面,AOP主要實現的目的是針對業務處理過程中的切面進行提取

Spring Boot2 系列教程(五)Spring Boot中的 yaml 配置

搞 Spring Boot 的小夥伴都知道,Spring Boot 中的配置檔案有兩種格式,properties 或者 yaml,一般情況下,兩者可以隨意使用,選擇自己順手的就行了,那麼這兩者完全一樣嗎?肯定不是啦!本文就來和大夥重點介紹下 yaml 配置,最後再來看看 yaml 和 properties 配

Spring Boot2 系列教程(八)Spring Boot 中配置 Https

https 現在已經越來越普及了,特別是做一些小程式或者公眾號開發的時候,https 基本上都是剛需了。 不過一個 https 證書還是挺費錢的,個人開發者可以在各個雲服務提供商那裡申請一個免費的證書。我印象中有效期一年,可以申請 20 個。 今天要和大家聊的是在 Spring Boot 專案中,如何開啟 h

Spring Boot2 系列教程(九)Spring Boot 整合 Thymeleaf

雖然現在慢慢在流行前後端分離開發,但是據鬆哥所瞭解到的,還是有一些公司在做前後端不分的開發,而在前後端不分的開發中,我們就會需要後端頁面模板(實際上,即使前後端分離,也會在一些場景下需要使用頁面模板,例如郵件傳送模板)。 早期的 Spring Boot 中還支援使用 Velocity 作為頁面模板,現在的

Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

今天來聊聊 Spring Boot 整合 Freemarker。 Freemarker 簡介 這是一個相當老牌的開源的免費的模版引擎。通過 Freemarker 模版,我們可以將資料渲染成 HTML 網頁、電子郵件、配置檔案以及原始碼等。Freemarker 不是面向終端使用者的,而是一個 Java 類庫,我

八、Spring Cloud系列啟動慢Initializing ExecutorService 'taskScheduler'

在單體服務啟動時,發現了一個問題,在控制檯輸出到如下資訊時啟動超級慢,需要等待三分鐘左右。 INFO | restartedMain | org.springframework.scheduling.concurrent.ThreadPoolTaskSch

(二)Spring Cloud實踐使用Spring Cloud Config實現分散式配置管理

Spring Cloud Config為微服務應用提供了統一的分散式配置管理,將配置檔案放到git上,所有的微服務應用均從git上獲取這些配置檔案。  該種情況下,如果將配置檔案放在第三方提供的版本控制器上,需要網路可訪問,另外,也可以自己搭建gitlab私服,來存放自己的

Spring Boot2(二)使用Spring Boot2整合Mybatis快取機制

前言 學習SpringBoot整合Mybatis的第二章,瞭解到Mybatis自帶的快取機制,在部署的時候踩過了一些坑。在此記錄和分享一下Mybatis的快取作用。 本文章的原始碼再文章末尾 什麼是查詢快取 MyBatis有一級快取和二級快取。記錄可以看下這篇博文: 一級快取 首先看一下什麼是一級快取,一級快

Spring Data 系列學習】Spring Data JPA @Query 註解查詢

# 【Spring Data 系列學習】Spring Data JPA @Query 註解查詢 前面的章節講述了 Spring Data Jpa 通過宣告式對資料庫進行操作,上手速度快簡單易操作。但同時 JPA 還提供通過註解的方式實現,通過將 `@Query` 註解在繼承 repository 的介面類

Spring Boot系列教程四配置文件詳解properties

date int ava ota axu return 端口 rand work 一.配置隨機數,使用隨機數 在application.properties文件添加配置信息 1 #32位隨機數 2 woniu.secret=${random.value} 3 #隨機整數

Spring Boot系列教程七Spring boot集成MyBatis

override fill sql water sso avi size logs index 一.創建項目 項目名稱為 “springboot_mybatis_demo”,創建過程中勾選 “Web”,“MyBatis”,“MySQL”,第一次創建Maven

Spring Boot系列教程八 Mybatis使用分頁插件PageHelper

tid bind color clas owb 如何 cto 集成 使用 一.前言 上篇博客中介紹了spring boot集成mybatis的方法,基於上篇文章這裏主要介紹如何使用分頁插件PageHelper。在MyBatis中提供了攔截器接口,我們可以使用PageHelp

Spring Boot幹貨系列(二)配置文件解析

set test profile ava java prefix 標註 了解 pre Spring Boot:配置文件解析 前言 上一篇介紹了Spring Boot的入門,知道了Spring Boot使用“習慣優於配置”(項目中存在大量的配置,此外

【轉】Spring Boot幹貨系列(三)啟動原理解析

無法 time exp 記得 started 打印 ping 正文 exclude 前言 前面幾章我們見識了SpringBoot為我們做的自動配置,確實方便快捷,但是對於新手來說,如果不大懂SpringBoot內部啟動原理,以後難免會吃虧。所以這次博主就跟你們一起一步步揭開