Sprint Boot入门(1):创建第一个Spring Boot应用

时间:2023-01-18 15:46:16

搭建工程

注:建议使用eclipse的STS插件创建Spring项目,而不是下面的Gradle项目,否则会导致有一些Spring文件不存在。

new Gradle Project,如下

Sprint Boot入门(1):创建第一个Spring Boot应用

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

Sprint Boot入门(1):创建第一个Spring Boot应用

点击next,点finish

工程搭建好后,如下:

Sprint Boot入门(1):创建第一个Spring Boot应用

配置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启动应用。图标如下:

Sprint Boot入门(1):创建第一个Spring Boot应用

点击以后出现以下界面:

Sprint Boot入门(1):创建第一个Spring Boot应用

右击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/,便可返回以下信息:

Sprint Boot入门(1):创建第一个Spring Boot应用

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中,启动应用之前可以通过配置选择指定的配置文件,如下:

右击工程:

Sprint Boot入门(1):创建第一个Spring Boot应用

点击Open Config

Sprint Boot入门(1):创建第一个Spring Boot应用

在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/目录下。如下图:

Sprint Boot入门(1):创建第一个Spring Boot应用

运行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&plus;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框架&lpar;二&rpar;之DIY一个Spring Boot的自动配置

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

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

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

  7. Spring Boot入门第一天:Hello&comma; Spring Boot&excl;

    原文链接 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. SQL Server删除distribution数据库二

    以前总结过一遍博文SQL Server删除distribution数据库,里面介绍了如何删除distribution数据库.今天介绍一个删除distribution的特殊案例, 在这之前,我不知道这个 ...

  2. VS10x CodeMap 注册码 key VS插件CodeMap

    VS10x CodeMap 注册码(key): #$aCN/L/ra73OaqCJENXc2JIDL61IMawNWBBX+PxhBzobE9w3QlcrwoXeB3DWBC2f56y9r0Hx2XP ...

  3. MySQL中MySQL X&period;X Command Line Client一闪而过的问题

    问题介绍:我安装完MySQL(我安装的是5.5)后,使用MySQL 5.5 Command Line Client,每次点击,总是一闪而过.解决方法如下:      首先进入cmd 切入MySQL的安 ...

  4. Nginx&colon;Linux下安装Nginx与配置

    准备目录 [root@sijizhen ~]# mkdir /usr/local/nginx [root@sijizhen ~]# cd /usr/local/nginx/ 下载 1.Nginx,在h ...

  5. pycharm(Python编辑器)的激活

    1.将“0.0.0.0 account.jetbrains.com”中的内容添加到hosts文件中,hosts路径为:C:\Windows\System32\drivers\etc mac用户的hos ...

  6. linux之Ubuntu学习

    开始学习Linux系统是在通过虚拟机VMware上安装Ubuntu操作系统来学习的. 一.Ubuntu安装及使用 第一步:安装虚拟机VMware 第二步:虚拟机安装好之后,创建一个新的虚拟机,安装Ub ...

  7. C&num;退出窗体的总结方法

    一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.En ...

  8. Python入门-编写抓取网站图片的爬虫-正则表达式

    //生命太短 我用Python! //Python真是让一直用c++的村里孩子长知识了! 这个仅仅是一个测试,成功抓取了某网站1000多张图片. 下一步要做一个大新闻 大工程 #config = ut ...

  9. PIVOT 行列相转

    先介绍一下英文释义: pivot 英 ['pɪvət]  美 ['pɪvət] n. 枢轴:中心点:旋转运动 vt. 以…为中心旋转:把…置于枢轴上 vi. 在枢轴上转动:随…转移 adj. 枢轴的: ...

  10. MATLAB:图形加法运算(imadd函数)

    close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; I=imread('rice.png'); %读入图像rice,赋值给I J=im ...