Spring Boot的应用启动与关闭的方法

2025-05-27 0 69

Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行、产品级别的基于Spring框架的应用,大部分Spring Boot应用只需要非常少的配置就可以快速运行起来,是一个与微服务(MicroServices)相当契合的微框架。

1. Spring Boot应用打包

Spring Boot应用可以打成jar包,其中内嵌tomcat,因此可以直接启动使用。但是在Spring Boot应用启动之前,首先需要进行打包,本文讲述的是Maven工程的打包,打包需要的前提条件(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

24

25

26

27

28

29

30

31

32

33
...

<packaging>jar</packaging>

...

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

...

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<configuration>

<mainClass>com.***.Application</mainClass>

</configuration>

<executions>

<execution>

<goals>

<goal>repackage</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

...

打包命令为:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49
mvn clean package -Dmaven.test.skip=true

# Demo

$ mvn clean package -Dmaven.test.skip=true

[INFO] Scanning for projects...

[WARNING]

[WARNING] Some problems were encountered while building the effective model for com.example:myproject:jar:0.0.1-SNAPSHOT

[WARNING] 'build.plugins.plugin.version' for org.springframework.boot:spring-boot-maven-plugin is missing. @ line 38, column 17

[WARNING]

[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.

[WARNING]

[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

[WARNING]

[INFO]

[INFO] ------------------------------------------------------------------------

[INFO] Building myproject 0.0.1-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO]

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ myproject ---

[INFO] Deleting /Users/ltc/Spring Boot Demo/target

[INFO]

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ myproject ---

[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] Copying 1 resource

[INFO]

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myproject ---

[INFO] Changes detected - recompiling the module!

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!

[INFO] Compiling 1 source file to /Users/ltc/Spring Boot Demo/target/classes

[INFO]

[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ myproject ---

[INFO] Not copying test resources

[INFO]

[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ myproject ---

[INFO] Not compiling test sources

[INFO]

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ myproject ---

[INFO] Tests are skipped.

[INFO]

[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---

[INFO] Building jar: /Users/ltc/Spring Boot Demo/target/myproject-0.0.1-SNAPSHOT.jar

[INFO]

[INFO] --- spring-boot-maven-plugin:1.5.0.RC1:repackage (default) @ myproject ---

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 1.861 s

[INFO] Finished at: 2017-01-13T15:31:32+08:00

[INFO] Final Memory: 26M/308M

[INFO] ------------------------------------------------------------------------

或在eclipse中运行run -> Maven build…,在Goals中填写clean package -Dmaven.test.skip=true,运行,打包完成。

2. Spring Boot应用启动

Spring Boot启动命令为:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51
java -jar application.jar

# Demo

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

. ____ _ __ _ _

/\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\

( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\

\\\\/ ___)| |_)| | | | | || (_| | ) ) ) )

' |____| .__|_| |_|_| |_\\__, | / / / /

=========|_|==============|___/=/_/_/_/

:: Spring Boot :: (v1.4.3.RELEASE)

2017-01-13 15:31:36.911 INFO 62119 --- [ main] com.test.Example : Starting Example on local with PID 62119 (/Users/ltc/Spring Boot Demo/target/myproject-0.0.1-SNAPSHOT.jar started by liutianchi in /Users/ltc/Spring Boot Demo)

2017-01-13 15:31:36.916 INFO 62119 --- [ main] com.test.Example : No active profile set, falling back to default profiles: default

2017-01-13 15:31:36.981 INFO 62119 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@b1a58a3: startup date [Fri Jan 13 15:31:36 CST 2017]; root of context hierarchy

2017-01-13 15:31:38.602 INFO 62119 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)

2017-01-13 15:31:38.615 INFO 62119 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat

2017-01-13 15:31:38.616 INFO 62119 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.6

2017-01-13 15:31:38.718 INFO 62119 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2017-01-13 15:31:38.718 INFO 62119 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1740 ms

2017-01-13 15:31:38.927 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'metricsFilter' to: [/*]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'webRequestLoggingFilter' to: [/*]

2017-01-13 15:31:38.932 INFO 62119 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'applicationContextIdFilter' to: [/*]

2017-01-13 15:31:39.217 INFO 62119 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@b1a58a3: startup date [Fri Jan 13 15:31:36 CST 2017]; root of context hierarchy

2017-01-13 15:31:39.310 INFO 62119 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String com.test.Example.home()

2017-01-13 15:31:39.313 INFO 62119 --- [ 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-01-13 15:31:39.313 INFO 62119 --- [ 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-01-13 15:31:39.338 INFO 62119 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-01-13 15:31:39.338 INFO 62119 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-01-13 15:31:39.378 INFO 62119 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

2017-01-13 15:31:39.665 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/metrics/{name:.*}],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)

2017-01-13 15:31:39.665 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/metrics || /manage/metrics.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.666 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/mappings || /manage/mappings.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.667 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/trace || /manage/trace.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.667 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/info || /manage/info.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.668 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/configprops || /manage/configprops.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.669 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/heapdump || /manage/heapdump.json],methods=[GET],produces=[application/octet-stream]}" onto public void org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint.invoke(boolean,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException,javax.servlet.ServletException

2017-01-13 15:31:39.669 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/autoconfig || /manage/autoconfig.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.673 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/env/{name:.*}],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)

2017-01-13 15:31:39.673 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/env || /manage/env.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.674 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/health || /manage/health.json],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(java.security.Principal)

2017-01-13 15:31:39.675 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/dump || /manage/dump.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.677 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/shutdown || /manage/shutdown.json],methods=[POST]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.ShutdownMvcEndpoint.invoke()

2017-01-13 15:31:39.678 INFO 62119 --- [ main] o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/manage/beans || /manage/beans.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()

2017-01-13 15:31:39.799 INFO 62119 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup

2017-01-13 15:31:39.809 INFO 62119 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 0

2017-01-13 15:31:39.944 INFO 62119 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)

2017-01-13 15:31:39.949 INFO 62119 --- [ main] com.test.Example : Started Example in 4.292 seconds (JVM running for 4.726)

3. Spring Boot应用关闭

下面主要有两种方式进行Spring Boot关闭:通过HTTP发送shutdown信号,或者通过service stop的方式。

Spring Boot应用关闭的前提条件是POM.xml添加以下内容:

?

1

2

3

4
<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

application.properties中添加:

?

1

2

3

4
#启用shutdown

endpoints.shutdown.enabled=true

#禁用密码验证

endpoints.shutdown.sensitive=false

关闭命令为:

?

1

2

3

4

5

6
curl -X POST host:port/shutdown

# Demo

$ curl -X POST http://localhost:8080/shutdown

{"message":"Shutting down, bye..."}

$ curl -X POST http://localhost:8080/manage/shutdown

{"message":"Shutting down, bye..."}

如果要配置路径,需要在application.properties中添加management.context-path=/manage,则关闭命令变为curl -X POST host:port/manage/shutdown。

4. 安全验证

如果在关闭时需要安全验证,则在pom.xml文件中添加:

?

1

2

3

4
<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-security</artifactId>

</dependency>

application.properties中添加:

?

1

2

3

4

5

6

7

8

9

10

11

12
#开启shutdown的安全验证

endpoints.shutdown.sensitive=true

#验证用户名

security.user.name=admin

#验证密码

security.user.password=admin

#角色

management.security.role=SUPERUSER

# 指定端口

management.port=8081

# 指定地址

management.address=127.0.0.1

关闭命令为:

?

1

2

3

4
curl -u admin:admin -X POST http://127.0.0.1:8081/manage/shutdown

# Demo

$ curl -u admin:admin -X POST http://127.0.0.1:8081/manage/shutdown

{"message":"Shutting down, bye..."}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://blog.csdn.net/Quincuntial/article/details/54410916

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Spring Boot的应用启动与关闭的方法 https://www.kuaiidc.com/76975.html

相关文章

发表评论
暂无评论