Spring Boot 应用程序开发入门
来源:互联网 发布:长沙软件学校排名 编辑:程序博客网 时间:2024/06/07 07:17
在本节中,我们来在Java中开发一个简单的“Hello World!
” Web应用程序,突出一些Spring Boot的主要特性。在这里将使用Maven来构建这个项目,因为大多数IDE支持它。
在开始之前,打开一个终端,检查是否安装了Java和Maven的有效版本。
C:\Users\Administrator>java -versionjava version "1.8.0_65"Java(TM) SE Runtime Environment (build 1.8.0_65-b17)Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)C:\Users\Administrator>mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: D:\worksp\yiibai.com\apache-maven-3.3.9Java version: 1.8.0_65, vendor: Oracle CorporationJava home: D:\Program Files\Java\jdk1.8.0_65\jreDefault locale: zh_CN, platform encoding: GBKOS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
此示例需要在其自己的文件夹中创建。后续说明假定您已创建了一个合适的文件夹,并且它是“当前目录”。
提示,如果还没有安装 Maven ,请参考安装教程 - http://www.yiibai.com/maven/maven_environment_setup.html
创建POM文件
我们需要从创建一个Maven pom.xml
文件开始。pom.xml
是将用于构建项目的配置,在这个示例中,把它放在D:\spring-boot\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.4.3.RELEASE</version> </parent> <!-- Additional lines to be added here... --></project>
它给出了一个工作构建,可以通过运行mvn package
(可以忽略“jar will be empty - no content was marked for inclusion!”现在警告)测试它。
执行结果如下 -
此时,可以将项目导入到IDE中(最新的Java IDE包括对Maven的内置支持)。为了简单起见,这里将继续为此示例使用纯文本编辑器。
添加类路径依赖项
Spring Boot提供了一些“启动器”,使得容易添加 jar 到你的类路径。在我们的示例应用程序已经在POM的父部分中使用了spring-boot-starter-parent
。spring-boot-starter-parent
是一个特殊的启动器,提供了有用的Maven 默认值。 它还提供了一个依赖关系管理部分,以便您可以省略“blessed
”依赖关系的version
标签。
其他“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
文件,并在parent
部分的下面添加spring-boot-starter-web
依赖关系:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>
完整的 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.4.3.RELEASE</version> </parent> <!-- Additional lines to be added here... --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies></project>
如果再次运行mvn dependency:tree
命令,将看到现在还有许多其他依赖项,包括Tomcat Web
服务器和Spring Boot
本身。
编写代码
要完成上面的应用程序示例,我们需要创建一个单一的Java文件。Maven将默认从src/main/java
编译源代码,所以需要创建该文件夹结构,然后添加一个名为src/main/java/Example.java
的文件,完整的文件路径是D:/spring-boot/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!"; // Copyright: w w w . y i I b A i.c O m } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); }}
虽然这里没有太多的代码,但背后有很多事情正在发生。让我们看看代码的重要部分。
@RestController 和 @RequestMapping注解
Example
类的第一个注解是@RestController
。这称为构造型注释,它为阅读代码的人提供了提示,对于Spring,该类扮演了一个特定的角色。在这种情况下,这个类是一个web@Controller
,因此Spring会在处理传入的Web请求时考虑它。
@RequestMapping
注解提供了“路由”信息。它告诉Spring任何带有路径“/
”的HTTP请求应该映射到home
方法。@RestController
注解告诉Spring将生成的字符串直接返回给调用者。@RestController
和@RequestMapping
注解是Spring MVC注释(它们不是Spring Boot特有的)。有关更多详细信息,请参阅Spring参考文档中的MVC部分。
@EnableAutoConfiguration注解
第二个类级别注解是@EnableAutoConfiguration
。这个注解告诉Spring Boot
“猜测”将如何配置Spring,它是基于添加的jar
依赖。 由于spring-boot-starter-web
添加了Tomcat
和Spring MVC,因此自动配置将假设正在开发一个Web应用程序并相应地设置Spring。
启动器和自动配置(Starters & Auto-Configuration)
自动配置旨在与“Starters”配合使用,但这两个概念不直接绑定。可以自由选择和选择起始者以外的jar
依赖,Spring Boot仍将尽力自动配置应用程序。
“main”方法
应用程序的最后一部分是主(main)方法。 这只是一个遵循Java约定的应用程序入口点的标准方法。main
方法通过调用run
来委托Spring BootSpringApplication
类。SpringApplication
将引导应用程序,启动Spring,从而启动自动配置Tomcat Web服务器。需要传递Example.class
作为run
方法的参数来告诉SpringApplication
,这是主要的Spring组件。args
数组也被传递以暴露任何命令行参数。
运行示例
现在,我们的应用程序应该可以正常运行工作了。由于 POM 中使用了spring-boot-starter-parent
,有一个有用的run
目标,用它来启动应用程序。输入mvn spring-boot:run
从根项目目录启动应用程序:
$ mvn spring-boot:run
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/::Spring Boot:: (v1.4.3.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.222 seconds (JVM running for 6.514)
如果打开Web浏览器访问 http://localhost:8080 , 应该会看到以下输出:
要正常退出应用程序,请按ctrl-c
。
创建可执行jar
现在,我们来完成一个例子,创建一个完全自包含的可执行jar
文件,可以在生产中运行。可执行jar
(有时称为“fat jar”)是包含编译的类以及需要运行的所有jar
依赖性的代码存档。
可执行jar和Java
Java不提供任何标准方法来加载嵌套的jar
文件(即包含在jar
中的jar
文件)。如果想要分发一个自包含的应用程序,这可能是有问题的。
为了解决这个问题,许多开发人员使用“uber” jar。 一个uber jar简单地将所有类,从所有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>
现在,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.4.3.RELEASE</version> </parent> <!-- Additional lines to be added here... --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build></project>
POM
中 spring-boot-starter-parent
包括<executions>
配置以绑定repackage
目标。如果不使用父POM
,则需要自己声明此配置。有关详细信息,请参阅插件文档。
保存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.4.3.RELEASE:repackage (default) @ myproject ---[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------
在 target
目录中,应该看到一个myproject-0.0.1-SNAPSHOT.jar
文件。文件大小应为10 Mb
左右。如果想看里面内容,可以使用jar tvf
:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
应该在target
目录中看到一个名为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.4.3.RELEASE)....... . . ........ . . . (log output here)....... . . ......... Started Example in 2.536 seconds (JVM running for 2.864)
如果打开Web浏览器访问 http://localhost:8080 , 应该会看到以下输出:
和之前一样,要正常退出应用程序,同时按住ctrl+c
。
到此,第一个 Spring Boot应用程序的开发就结束了。接下来再学习其它方面的知识内容。
- Spring Boot应用程序开发入门
- Spring Boot 应用程序开发入门
- Spring Boot 开发入门
- idea 开发spring boot应用程序
- Spring boot入门,整合mybatis开发案例
- 【Spring Boot】Spring Boot 入门
- Hello Spring Boot应用程序
- Spring Boot应用程序启动器
- Spring Boot入门,一步一步简化,实现Spring Web项目开发
- 一起学JAVA之《spring boot》02-开发您的第一个Spring Boot应用程序
- Spring Boot 快速入门
- spring boot 入门
- Spring Boot 入门
- Spring Boot 入门
- spring boot简易入门
- Spring boot入门
- Spring Boot 快速入门
- Spring boot快速入门
- 【机器学习调查】脏数据最棘手,逻辑回归最常用
- 数据校验框架
- 以字节流的形式读取文件
- 各种机器学习任务的顶级结果(论文)汇总
- 想成为一名数据科学家?你得先读读这篇文章
- Spring Boot 应用程序开发入门
- 机器学习应该准备哪些数学预备知识?
- jquery取值并将值返回到另一个HTML页面
- 一文读懂深度学习(附学习资源)
- 程序员必备的代码审查(Code Review)清单
- 深度学习中如何选择一款合适的GPU卡的一些经验和建议分享
- Android targetSdkVersion 原理
- 硬盘无法退出方法
- 概念理解R-CNN --> FAST-RCNN --> FASTER-RCNN