Sprint Boot入门(1):创建第一个Spring Boot应用
搭建工程
注:建议使用eclipse的STS插件创建Spring项目,而不是下面的Gradle项目,否则会导致有一些Spring文件不存在。
new Gradle Project,如下

点next,如下选择第一个选项Gradle wrapper

点击next,点finish
工程搭建好后,如下:

配置Gradle
配置build.gradle文件如下:
plugins {
id 'org.springframework.boot' version '1.5.4.RELEASE'
id 'java'
id 'eclipse'
}
jar {
baseName = 'myproject'
version = '0.0.1'
}
jar.into('/') {
from('src/main/java')
} //稍后,打包时介绍
repositories {
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
保存后,右击该工程 -> Gradle -> ReFresh Gradle Project,这样Gradle便会根据配置自动下载依赖包。
编写代码
在目录src/main/java下创建类文件Example.java,并输入代码如下:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*; @RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
} public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}
以下对上面使用的几个注解作简单的解释:
@RestController
为了方便,我们不使用@ResponseBody来注解所有@RequestMapping方法,取而代之使用@RestController。@RestController注解组合了@ResponseBody和@Controller,因此可以用@RestController代替这两个注解。
@Controller
dispatcher会扫描被该注解所注解的类,以查找映射的方法并检测@RequestMapping注解
@RequestMapping
使用该注解可以映射URL到一个类或者特定的处理方法上。
@EnableAutoConfiguration
Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。自从spring-boot-starter-web添加了Tomcat和Spring MVC,auto-configuration默认你开发的是一个web应用,并设置相应的Spring。
main方法:Java应用的入口。main方法通过调用SpringApplication.run方法把权利转交给SpringApplication类。SpringApplication会自动配置Tomcat web服务器。我们需要把Example.class作为参数传递给run方法,告知SpringApplication这是一个Spring的首要组件。
运行Web应用
在这里使用Boot Dashboard启动应用。图标如下:

点击以后出现以下界面:

右击GradleProject_02,点击(Re)start,出现以下启动信息:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.4.RELEASE) 2017-06-28 16:11:59.652 INFO 6627 --- [ main] Example : Starting Example on wuchao-Lenovo with PID 6627 (/home/wuchao/eclipse-jee/workspace/GradleProject_02/bin started by wuchao in /home/wuchao/eclipse-jee/workspace/GradleProject_02)
2017-06-28 16:11:59.655 INFO 6627 --- [ main] Example : No active profile set, falling back to default profiles: default
2017-06-28 16:11:59.771 INFO 6627 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@78dd667e: startup date [Wed Jun 28 16:11:59 CST 2017]; root of context hierarchy
2017-06-28 16:12:02.864 INFO 6627 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-06-28 16:12:02.881 INFO 6627 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2017-06-28 16:12:02.882 INFO 6627 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.15
2017-06-28 16:12:03.086 INFO 6627 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2017-06-28 16:12:03.087 INFO 6627 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3324 ms
2017-06-28 16:12:03.236 INFO 6627 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2017-06-28 16:12:03.240 INFO 6627 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-06-28 16:12:03.240 INFO 6627 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-06-28 16:12:03.240 INFO 6627 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-06-28 16:12:03.241 INFO 6627 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2017-06-28 16:12:03.798 INFO 6627 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@78dd667e: startup date [Wed Jun 28 16:11:59 CST 2017]; root of context hierarchy
2017-06-28 16:12:03.928 INFO 6627 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String Example.home()
2017-06-28 16:12:03.938 INFO 6627 --- [ 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)
2017-06-28 16:12:03.944 INFO 6627 --- [ 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)
2017-06-28 16:12:04.071 INFO 6627 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-28 16:12:04.071 INFO 6627 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-28 16:12:04.115 INFO 6627 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-28 16:12:04.421 INFO 6627 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-06-28 16:12:04.576 INFO 6627 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-06-28 16:12:04.580 INFO 6627 --- [ main] Example : Started Example in 5.927 seconds (JVM running for 7.945)
在浏览器输入http://localhost:8080/,便可返回以下信息:

Spring Boot 部署与服务配置
Server配置
# 项目contextPath,一般在正式发布版本中,我们不配置
server.context-path=/myspringboot
# 错误页,指定发生错误时,跳转的URL。请查看BasicErrorController源码便知
server.error.path=/error
# 服务端口
server.port=9090
# session最大超时时间(分钟),默认为30
server.session-timeout=60
# 该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置
# server.address=192.168.16.11
Tomcat配置
Tomcat为Spring Boot的默认容器,下面是几个常用配置:
# tomcat最大线程数,默认为200
server.tomcat.max-threads=800
# tomcat的URI编码
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹(如:C:\Users\Shanhy\AppData\Local\Temp)
server.tomcat.basedir=H:/springboot-tomcat-tmp
# 打开Tomcat的Access日志,并可以设置日志格式的方法:
#server.tomcat.access-log-enabled=true
#server.tomcat.access-log-pattern=
# accesslog目录,默认在basedir/logs
#server.tomcat.accesslog.directory=
# 日志文件目录
logging.path=H:/springboot-tomcat-tmp
# 日志文件名称,默认为spring.log
logging.file=myapp.log
使用Profile区分环境
spring boot 可以在 “配置文件”、“Java代码类”、“日志配置” 中来配置profile区分不同环境执行不同的结果
配置文件
以application.properties 为例,通过文件名来区分环境 application-{profile}.properties
创建application.properties文件
app.name=MyApp
server.port=8080
创建application-dev.properties文件:
server.port=8081
创建application-stg.properties文件:
server.port=8082
在启动程序的时候通过添加 –spring.profiles.active={profile} 来指定具体使用的配置
例如我们执行 java -jar demo.jar –spring.profiles.active=dev 那么上面3个文件中的内容将被如何应用?
Spring Boot 会先加载默认的配置文件,然后使用具体指定的profile中的配置去覆盖默认配置。
在Eclipse中的Boot DashBoard中,启动应用之前可以通过配置选择指定的配置文件,如下:
右击工程:

点击Open Config

在Profile选项里选择对应的参数stg或dev便可以选择不同的配置文件。
创建可执行jar文件
在项目所在目录执行gradle build即可,会在build/libs目录下生成对应的jar文件。
注意:打包时配置文件并不会被打包,因此需要在build.gradle文件中加上以下内容:
jar.into('/') {
from('src/main/java')
}
目的是将src/main/java目录下的所有文件拷贝到jar包运行的根目录(class类所在的目录),jar包的类和配置文件被放到/BOOT-INF/classes/目录下。如下图:

运行jar文件
java -jar myproject-0.0.1.jar -D spring.profiles.active=dev
其中参数-D spring.profiles.active=dev用来指定具体的配置文件application-dev.properties
输出以下信息:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.4.RELEASE) 2017-06-28 17:35:59.108 INFO 11216 --- [ main] Example : Starting Example on wuchao-Lenovo with PID 11216 (/home/wuchao/eclipse-jee/workspace/GradleProject_02/build/libs/myproject-0.0.1.jar started by wuchao in /home/wuchao/eclipse-jee/workspace/GradleProject_02/build/libs)
2017-06-28 17:35:59.119 INFO 11216 --- [ main] Example : The following profiles are active: dev
2017-06-28 17:35:59.186 INFO 11216 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4534b60d: startup date [Wed Jun 28 17:35:59 CST 2017]; root of context hierarchy
2017-06-28 17:36:01.151 INFO 11216 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8081 (http)
2017-06-28 17:36:01.171 INFO 11216 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2017-06-28 17:36:01.172 INFO 11216 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.15
2017-06-28 17:36:01.273 INFO 11216 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2017-06-28 17:36:01.273 INFO 11216 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2090 ms
2017-06-28 17:36:01.426 INFO 11216 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2017-06-28 17:36:01.430 INFO 11216 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-06-28 17:36:01.431 INFO 11216 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-06-28 17:36:01.431 INFO 11216 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-06-28 17:36:01.431 INFO 11216 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2017-06-28 17:36:01.957 INFO 11216 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4534b60d: startup date [Wed Jun 28 17:35:59 CST 2017]; root of context hierarchy
2017-06-28 17:36:02.048 INFO 11216 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String Example.home()
2017-06-28 17:36:02.054 INFO 11216 --- [ 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)
2017-06-28 17:36:02.055 INFO 11216 --- [ 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)
2017-06-28 17:36:02.100 INFO 11216 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-28 17:36:02.101 INFO 11216 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-28 17:36:02.157 INFO 11216 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-06-28 17:36:02.346 INFO 11216 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-06-28 17:36:02.415 INFO 11216 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)
2017-06-28 17:36:02.420 INFO 11216 --- [ main] Example : Started Example in 3.838 seconds (JVM running for 4.389)
便可在浏览器中输入http://localhost:8081/访问该应用。
Sprint Boot入门(1):创建第一个Spring Boot应用的更多相关文章
- Spring Boot入门教程1、使用Spring Boot构建第一个Web应用程序
一.前言 什么是Spring Boot?Spring Boot就是一个让你使用Spring构建应用时减少配置的一个框架.约定优于配置,一定程度上提高了开发效率.https://zhuanlan.zhi ...
- spring boot学习01【搭建环境、创建第一个spring boot项目】
1.给eclipse安装spring boot插件 Eclipse中安装Spring工具套件(STS): Help -> Eclipse Marketplace... 在Search标签或者Po ...
- Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版
一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...
- Eclipse创建第一个Spring Boot项目
一.安装SpringBoot插件 安装过程需要联网下载插件,属于在线安装,请耐心等待安装完成,下载安装完成以后,需要重启Eclipse 二.创建Spring Boot项目 如下图所示new-other ...
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...
- Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件
上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...
- Spring Boot入门第一天:Hello, Spring Boot!
原文链接 1. 新建一个Maven Web项目. 2. 配置pom.xml文件. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
- eclipse中配置maven和创建第一个 Spring Boot Application
关于Maven的下载.环境变量的配置自行百度,今天记录一下在Eclipse中配置Maven的操作: mvn -v 出现上图说明maven和jdk的要求都达到了(jdk要8.0及以上的版本) 然后在ec ...
- Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用
该篇为Spring Boot入门到实战系列入门篇的第二篇.介绍创建Spring Boot应用的几种方法. Spring Boot应用可以通过如下三种方法创建: 通过 https://start.spr ...
随机推荐
- Word里面怎么取消全文每个标题前面都有的这个点
Word里标题前面的那个点,如图1所示看起来觉得很不舒服,该怎么把它取消呢?(本测试环境是Win 10 64位系统,Microsoft Office家庭和学生版 2016) 图1 选中所有标题,如图2 ...
- temp-2017-4-20
------- p{font-size:20px;color:red;} uuuuuuuuuuu package com.wgscd.gwang.myapplication; /** Created ...
- 20155222 c语言实现pwd命令
20155222 c语言实现linux的pwd命令 1.学习pwd命令在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录.然 ...
- WPF-学习笔记 动态修改控件Margin的值
原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_gri ...
- sqlplus 中 各列对齐设定
设置列标题的对齐方式 JUSTFIFY {L[EFT]|C[ENTER]|R[IGHT]} SQL> col ename justify center SQL> /
- 【LG3247】[HNOI2016]最小公倍数
[LG3247][HNOI2016]最小公倍数 题面 洛谷 题解 50pts 因为拼凑起来的部分分比较多,所以就放一起了. 以下设询问的\(a,b\)为\(A,B\), 复杂度\(O(nm)\)的:将 ...
- P3704 [SDOI2017]数字表格
P3704 [SDOI2017]数字表格 链接 分析: $\ \ \ \prod\limits_{i = 1}^{n} \prod\limits_{j = 1}^{m} f[gcd(i, j)]$ $ ...
- 一款好看的Sublime Text浅色主题:Ayu大作
上一篇分享的VS Code的文中,界面也是浅色主题,也是Ayu作品.下面看一下Sublime Text中的Ayu浅色主题 不错吧. 如何下载? 首选项——插件控制——安装插件或者ctrl+shift+ ...
- 解决在控制层springmvc框架发出的400状态的错误
错误场景: 错误分析: 这也是我第一次遇到这个类型的异常,400响应状态代表:客户端发出的请求中携带的参数与服务器端接受的参数类型不匹配,进一步就是说我后台的实体类中数据类型为Date,而前台传递过来 ...
- eclipse生成ant build.xml打war包
背景: 最近想实现jenkins+ant命令一键打war包,部署到测试环境,然后自动化接口测试,结果发现用eclipse本身导出的ant buildfiles文件,打包出来都是空文件.很多代码都没 ...