Spring Boot参考文档(4)
来源:互联网 发布:dmg文件怎么安装 mac 编辑:程序博客网 时间:2024/06/11 01:19
原文链接:http://www.itbus.tech/detail.html?id=8717
让我们来开始我们的第一个项目,并借此来了解Spring Boot的一些关键功能。
我们会使用Maven来构建项目,因为很多IDE都支持Maven。
spring.io这个站点包含很多”Getting Started”指南,你可以在这里寻找一些针对性的问题。
在我们开始之前,请先检查你已经安装好Java和Maven了
$ java -versionjava version "1.7.0_51"Java(TM) SE Runtime Environment (build 1.7.0_51-b13)Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
$ mvn -vApache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)Maven home: /Users/user/tools/apache-maven-3.1.1Java version: 1.7.0_51, vendor: Oracle Corporation
这个例子需要创建一个目录,请在这一步就创建好目录,并进入目录。
创建POM
先创建一个Maven的pom.xml
文件,pom.xml
是Maven构建你的项目的食谱。使用编辑器,按照下面的来写你的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.3.RELEASE</version> </parent> <!-- Additional lines to be added here... --></project>
你可以输入mvn package
来测试是否成功。
在这一步,其实你可以用IDE来import这个项目(事实上,很多人都会这么做),不过我们还是会使用文本编辑器+命令行的方式来演示。
增加依赖
Spring Boot有很多”Starters”,这样是为了帮助我们可以更容易的添加我们需要的依赖。我们上面的例子已经用到了spring-boot-starter-parent
,这是一个特殊的starter,他的作用是提供很多Maven的默认设置。他还提供了一个dependency-management
,这样你可以省略一些“受过祝福”的依赖的版本。
其他的”Starters”就是简单的提供了一些你希望开发某个特定类型的应用所需的依赖。由于我们想要开发一个web应用,那我们就增加spring-boot-starter-web
这个依赖————但是在那之前,我们先看看我们已经依赖了哪些东西吧。
$ mvn dependency:tree[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree
这个命令会打印出你的项目的依赖树状图。我们可以看到spring-boot-starter-parent
并没有提供任何依赖。那我们继续我们编辑我们的pom.xml
来添加spring-boot-starter-web
依赖吧。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>
我们在运行mvn dependency:tree
看看,就会看到多了很多依赖,包括Tomcat服务器的依赖,还有Spring Boot他自己的一些依赖。
写代码
为了完成我们的web应用,我们还需要创建一个Java文件。Maven会自动的变异sec/main/java
目录下的Java文件,所以我们创建一个文件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@EnableAutoConfigurationpublic class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); }}
代码虽然不多,但是这份代码所干的事可不少啊。让我们一步一步来弄懂他。
@RestController和@RequestMapping注解
在我们的Example
中,第一个注解就是@RestController
。对我们程序员看来,这是一个提示,对Spring来说,这意味着 这个calss扮演着一个特殊的角色。在这种情况下,这个类是一个web@Controller
,这样Spring就会用它来处理web请求。
@RequestMapping
这个注解提供了路由
信息。他告诉Spring,任何path是”/”的请求都应该路由到home
方法。@RestController
注解告诉Spring直接返回string给调用者。
严格来说,
@RestController
和@RequestMapping
这两个注解是Spring MVC的注解(不是Spring Boot的)。
@EnableAutoConfiguration注解
第二个类级别的注解是@EnableAutoConfiguration
。这个注解让Spring根据你的jar依赖去猜你会如何配置Spring。因为spring-boot-starter-web
被添加到你的依赖中,所以这个auto-configuration会假设你正在开发一个web应用,然后做出相应的配置。
Starter和Auto-Configuration
Auto-Configuration可以和Starter很好的配合工作,但是这两个概念是没有关系的。你可以自由的选择你需要的依赖,而不仅仅是使用Starter,这种情况下,Auto-Configuration还是会尽力去帮你自动配置。
main方法
我们代码的最后一部分就是main
方法了。这就是一个标准的java规范的程序入口。我们的main方法里会调用Spring Boot的SpringApplication
。SpringApplication
将会启动Spring,继而启动Tomcat服务器,最后启动整个应用。我们需要传递一个参数Example.class
给run
方法,告诉SpringApplication
哪一个类是最原始的Spring组件。这个args
也可以传递任何命令行参数。
运行这个例子
到这一步,我们的应用应该就可以工作了。在项目的根目录,输入mvn spring-boot:run
就可以启动这个应用:
$ mvn spring-boot:run . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.3.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.222 seconds (JVM running for 6.514)
你可以在本机的浏览器打开localhost:8080
,可以看到这样的输出:
Hello World!
然后可以输入ctrl-c
来优雅的推出应用。(译者认为这是粗暴的退出应用)
创建一个可以直接执行的jar包
让我们最后来创建一个可以直接执行的jar包来完成这个示例。可执行jar包(有时候被称作“胖jar包”)是我们所有编译过的class文件,和所有依赖的jar包的一个归档。
可执行jar包
Java本身没有提供一个标准方式来加载嵌套的jar,这就给发布一个独立的应用带来了困扰。
为了解决这个问题,很多开发者使用”uber” jars,就是一个包含所有jar包的大jar包。
Spring Boot创建使用了一个不同的方式,允许你直接使用嵌套的jar包。
为了创建直接可执行的jar包,我们需要加入spring-boot-maven-plugin
插件到我们的pom.xml
中。把几行加到dependencies
后面:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build>
spring-boot-starter-parent包含了配置来帮顶repackage(重新打包)的goal(目的,Maven术语)。如果你没有使用parent,那你需要自己申明配置。
可参考plugin documentation
保存pom.xml
,运行mvn package
:
$ mvn package[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building myproject 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] .... ..[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar[INFO][INFO] --- spring-boot-maven-plugin:1.5.3.RELEASE:repackage (default) @ myproject ---[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------
在target
目录下,可以看到myproject-0.0.1-SNAPSHOT.jar
。这个文件大概10MB左右。如果你还小减小,你可以使用jar tvf
:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
你可以看到一个很小的文件:myproject-0.0.1-SNAPSHOT.jar.original
这是Maven在Spring Boot重新打包之前创建的jar包。
为了运行这个应用,输入java -jar
命令:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.3.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.536 seconds (JVM running for 2.864)
和之前一样,可以输入ctrl-c
来优雅的退出应用。(译者认为这是粗暴的)
- Spring Boot参考文档(4)
- Spring Boot参考文档(1)
- Spring Boot参考文档(2)
- Spring Boot参考文档(3)
- Spring Boot参考文档(5)
- Spring Boot参考文档(6)Starters
- Spring Boot参考文档(8)配置
- Spring Boot参考文档(10)@SpringBootApplication
- Spring Boot参考文档(7)建造你的代码
- Spring Boot参考文档(9)依赖注入
- Spring Boot参考文档(11)运行你的应用
- Spring Boot参考文档(12)开发者工具
- Spring-boot参考(二)
- 【小QのSpringBoot-翻译】Spring Boot官方参考指南-第一部分 Spring Boot文档
- Spring-boot参考(三) 配置
- Spring boot参考指南
- Spring Boot参考指南
- Spring MVC 参考文档
- 掌握这个套路,80%的问题你都能靠自己解决
- 找出数组中重复的数字
- Spring Boot参考文档(3)
- 【C#】之匿名函数及Lambda表达式
- js获取当前时间,并将标准日期格式转换成Long型
- Spring Boot参考文档(4)
- 1020. Tree Traversals (25)
- Js编码和Java后台解码
- Spring Boot参考文档(5)
- eclipse远程debug的跟踪方式
- iOS-视图,动画渲染机制探究
- 复杂链表的复制
- Spring Boot Admin的使用
- 统计票数