学习 spring boot [https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-first-application]
在官方 documentation 中的 "Developing your first Spring Boot application" 这一章节,教你如何开始一个 hello world 程序。
安装好 jdk 和 maven
jdk 1.8.0.144
maven 3.5.0
spring boot 1.5.6 (稳定版本)创建pom.xml
<?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.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
执行 mvn package
命令,下载相应的依赖包,同时,会创建 target 目录,并试图对当前程序打包,生成可执行的 jar 文件,有一个 warning: JAR will be empty - no content was marked for inclusion!
- spring boot 提供了很多 starters(dependency descriptors),能够很方便根据这些依赖描述下载 jars 添加到 classpath 中
spring-boot-starter-parent
: 提供了很有用发 maven 默认配置,同时提供了依赖管理器的部分功能,所以我们不需要关注 jars 的版本标签,maven 能够通过 starter 提供的依赖描述就能自动下载对应版本的依赖 jars
spring-boot-starter-web
:web application
执行 mvn dependency:tree,能够打印项目依赖树,同时第一次执行,会下载对应的依赖包。
在 pom.xml 中加上 spring-boot-starter-web
,继续执行上面的命令,发现:spring-boot-starter-parent
自己未提供依赖,spring-boot-starter-web
展示了依赖树,包括 tomcat server 和 spring boot
- 创建目录结构,创建 java 文件
src/main/java/Example.java
@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:这是一个固定注解(stereotype annotation),能够为用户提供代码阅读提示。在 spring 中,被@RestController 注解的类,为 web @Controller 类,在 spring 处理 web requests 时,会使用该类进行处理。这个注解是在类层面的(class-level)
@RequestMapping:提供了路由信息,它告诉 spring 任何路径带有 '/' 的HTTP Requests 都应该被映射到 home method。而@RestController告诉 spring 直接向调用者提交结果
@EnableAutoConfiguration 注解,也是类层面的(class-level),它能根据你添加的依赖包告诉 spring 如何进行配置。比如 spring-boot-starter-web
添加了 Tomcat 和 Spring MVC,auto-configuration
就会认为你在创建 web 应用并按此进行配置
注意:
starters 和 auto-configuration 是一起工作的,但是两者并没有绑定。你可以在 starter 之外自由选择 jar dependencies, spring boot 仍能据此进行最合适的配置。
The "main" method
main方法是 Java 的标准方法,同时也是应用程序的入口点。我们的代码中的 main 方法代表了 spring boot 中的 SpringApplication 类,并且调用 run 方法。SpringApplication 引导我们的应用启动spring,spring在启动已经自动配置完成的 tomcat web server。我们需要将 Example.class 作为参数传递给 run 方法,告诉 SpringApplication 这才是 主 spring 组件 (primary spring component)run the example
mvn spring-boot:run
启动成功后,在浏览器上输入http:127.0.0.1:8080
,页面返回 hello worldcreate excecutable jar
spring boot 提供了一种方式,能够直接将 jar 打包在一起
在 pom.xml 文件中的 dependencies 节点后面加上spring-boot-maven-plugin
,执行
mvn package
就能够在target 目录下创建 jar 文件
java -jar jar文件执行
jar tvf jar文件 // 查看 jar文件包含的所有文件信息