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內部啟動原理,以後難免會吃虧。所以這次博主就跟你們一起一步步揭開