搭建工程

注:建议使用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 部署与服务配置

Spring Boot的配置依赖application.properties文件(位于src/main/java/),因此创建该文件。

Server配置

对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应用的更多相关文章

  1. Spring Boot入门教程1、使用Spring Boot构建第一个Web应用程序

    一.前言 什么是Spring Boot?Spring Boot就是一个让你使用Spring构建应用时减少配置的一个框架.约定优于配置,一定程度上提高了开发效率.https://zhuanlan.zhi ...

  2. spring boot学习01【搭建环境、创建第一个spring boot项目】

    1.给eclipse安装spring boot插件 Eclipse中安装Spring工具套件(STS): Help -> Eclipse Marketplace... 在Search标签或者Po ...

  3. Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版

    一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...

  4. Eclipse创建第一个Spring Boot项目

    一.安装SpringBoot插件 安装过程需要联网下载插件,属于在线安装,请耐心等待安装完成,下载安装完成以后,需要重启Eclipse 二.创建Spring Boot项目 如下图所示new-other ...

  5. 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置

    在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...

  6. Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件

    上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...

  7. 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 ...

  8. eclipse中配置maven和创建第一个 Spring Boot Application

    关于Maven的下载.环境变量的配置自行百度,今天记录一下在Eclipse中配置Maven的操作: mvn -v 出现上图说明maven和jdk的要求都达到了(jdk要8.0及以上的版本) 然后在ec ...

  9. Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用

    该篇为Spring Boot入门到实战系列入门篇的第二篇.介绍创建Spring Boot应用的几种方法. Spring Boot应用可以通过如下三种方法创建: 通过 https://start.spr ...

随机推荐

  1. JavaWeb总结(八)

    对象作用域 在Servlet里可以用一个名字绑定一个对象,并且在应用中传递和使用这个对象 作用域对象 属性操作方法 作用域范围说明 ServletContext(上下文) void setAttrib ...

  2. jQuery学习-尺寸坐标

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 9 ORM-高阶补充(未完成)

    https://www.cnblogs.com/alice-bj/p/9195846.html#_labelTop https://www.cnblogs.com/yuanchenqi/article ...

  4. 6 admin(注册设计)源码解析、单例模式

    1.单例模式 https://www.cnblogs.com/yuanchenqi/articles/8323452.html 单例模式(Singleton Pattern)是一种常用的软件设计模式, ...

  5. Ceph学习之路(三)Ceph luminous版本部署

    1.配置ceph.repo并安装批量管理工具ceph-deploy [root@ceph-node1 ~]# vim /etc/yum.repos.d/ceph.repo [ceph] name=Ce ...

  6. python-利用Python窗口可视化抽象开发山寨版翻译软件

    1.图片展示: 2.写出上面图式的小脚本需要利用python两个方面的知识: (1)可视化库 (需用库:tkinter) (2)简单爬虫知识 (需用库:requests) 注意:爬虫在获取翻译信息时, ...

  7. Python_sklearn机器学习库学习笔记(七)the perceptron(感知器)

    一.感知器 感知器是Frank Rosenblatt在1957年就职于Cornell航空实验室时发明的,其灵感来自于对人脑的仿真,大脑是处理信息的神经元(neurons)细胞和链接神经元细胞进行信息传 ...

  8. P3877 [TJOI2010]打扫房间

    xswl以为是个插头dp,然后发现就是个sb题 相当于就是个匹配.每个格子度数为2,所以可以匹配2个相邻的点.匹配显然的用网络流.最后check有没有不匹配的点即可. #include<bits ...

  9. Discuz x3.2利用阿里云cdn处理https访问亲测教程

    第一步配置cdn和https 1.首先去阿里云.腾讯云.七牛云等申请免费https证书 2.虚拟主机是不能直接支持https的,需要cdn处理后才可以,并且端口是80 3.开启cdn加速处理,(买一个 ...

  10. 什么是REST,RESTful?

    转载自https://www.zhihu.com/question/28557115 https://blog.csdn.net/hjc1984117/article/details/77334616 ...