学习 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 world -
create excecutable jar
spring boot 提供了一种方式,能够直接将 jar 打包在一起
在 pom.xml 文件中的 dependencies 节点后面加上spring-boot-maven-plugin
,执行
mvn package
就能够在target 目录下创建 jar 文件
java -jar jar文件执行
jar tvf jar文件 // 查看 jar文件包含的所有文件信息
网友评论