SpringBoot(1)_HelloWord
# 开发环境准备
Java:java version "1.8.0_131"
Maven:Apache Maven 3.5.0
IDEA:IDEA 2017.1.2
# 创建SpringBoot项目
# 使用IDEA创建Maven项目
新建项目
选择Maven项目,Next
填写相应的Maven坐标,Next
然后点击Finish即可
# 搭建SpringBoot
参考SpringBoot的官方文档 (opens new window)
首先需要导入Maven的依赖,打开刚才创建项目的pom.xml文件,加入如下依赖:
# 加入SpringBoot的Maven依赖
<?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.fz</groupId>
<artifactId>springboot-01-helloword</artifactId>
<version>1.0-SNAPSHOT</version>
<!--springboot的依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 新建SpringBoot的主程序
SpringBoot需要一个主程序来运行起来,注意需要使用@SpringBootApplication注解来标注该类是一个SpringBoot的主程序类,用来启动SpringBoot应用。
package com.fz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 使用@SpringBootApplication注解标明该类是一个主程序类,是一个springboot应用
* Created by fangzheng on 2018/4/9.
*/
@SpringBootApplication
public class HelloWordApplication {
public static void main(String[] args) {
//使用SpringApplication.run()方法启动springboot程序
SpringApplication.run(HelloWordApplication.class,args);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新建HelloWordController
新建一个HelloWordController.java类,来处理用户发出的请求。代码很简单,和之前的SpringMVC用到的注解一样。
package com.fz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Created by fangzheng on 2018/4/9.
*/
@Controller
public class HelloWordController {
@RequestMapping("/helloword")
@ResponseBody
public String helloWord(){
return "spring boot helloword";
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 启动SpringBoot
SpringBoot的启动很简单,直接运行SpringBoot的主程序类即可。
启动后的日志如下:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.1.RELEASE)
2018-04-09 14:59:03.507 INFO 50364 --- [ main] com.fz.HelloWordApplication : Starting HelloWordApplication on localhost with PID 50364 (/Users/fangzheng/idea_workspace/springboot-01-helloword/target/classes started by fangzheng in /Users/fangzheng/idea_workspace/springboot-01-helloword)
2018-04-09 14:59:03.510 INFO 50364 --- [ main] com.fz.HelloWordApplication : No active profile set, falling back to default profiles: default
2018-04-09 14:59:03.548 INFO 50364 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@429bd883: startup date [Mon Apr 09 14:59:03 CST 2018]; root of context hierarchy
2018-04-09 14:59:04.501 INFO 50364 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2018-04-09 14:59:04.519 INFO 50364 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-04-09 14:59:04.519 INFO 50364 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.29
2018-04-09 14:59:04.523 INFO 50364 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/fangzheng/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
2018-04-09 14:59:04.579 INFO 50364 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-04-09 14:59:04.579 INFO 50364 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1034 ms
2018-04-09 14:59:04.652 INFO 50364 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-04-09 14:59:04.655 INFO 50364 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-04-09 14:59:04.655 INFO 50364 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-04-09 14:59:04.655 INFO 50364 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-04-09 14:59:04.655 INFO 50364 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-04-09 14:59:04.734 INFO 50364 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-09 14:59:04.910 INFO 50364 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@429bd883: startup date [Mon Apr 09 14:59:03 CST 2018]; root of context hierarchy
2018-04-09 14:59:04.949 INFO 50364 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/helloword]}" onto public java.lang.String com.fz.controller.HelloWordController.helloWord()
2018-04-09 14:59:04.953 INFO 50364 --- [ 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.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-04-09 14:59:04.954 INFO 50364 --- [ 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.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-04-09 14:59:04.971 INFO 50364 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-09 14:59:04.971 INFO 50364 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-04-09 14:59:05.063 INFO 50364 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-04-09 14:59:05.099 INFO 50364 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-04-09 14:59:05.102 INFO 50364 --- [ main] com.fz.HelloWordApplication : Started HelloWordApplication in 1.958 seconds (JVM running for 2.634)
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
注意查看控制台的Tomcat started on port(s): 8080 这句话,说明SpringBoot已经内嵌了Tomcat容器来运行SpringBoot的项目。
# 访问测试
打开浏览器,访问http://localhost:8080/helloword 即可看到如下结果。说明SpringBoot的helloword程序已经开发完成。
# SpringBoot应用的启动方式
# 运行主程序启动
通过主程序启动刚才已经演示过了。就是执行SpringBoot的主程序类即可。下面说说通过可执行jar文件启动的方式
# 执行jar包启动
如果我们的服务器没有按照java应用服务器,则还需要安装。所以springboot为我们提供了另外一种启动方式(命令行启动)
参考官方文档 (opens new window) 说明,需要导入springboot的maven插件,来将springboot应用打成一个jar包
打开pom.xml文件,增加如下依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2
3
4
5
6
7
8
将springboot应用打包,在IDEA的Maven Projects下,执行Lifecycle下的package命令即可
执行完命令后,可以在target目录下看到已经打好的包
直接通过命令行执行该jar包即可。
执行jar包
java -jar springboot-01-helloword-1.0-SNAPSHOT.jar
通过浏览器访问,效果和上面的一样。