目前网上有不少 Spring Boot 的入门文章, 都很有帮助, 本人最近在深入学习 Spring Cloud, 在搭建第一个 Hello World 程序时, 感觉对于新手而言, 介绍文章怎么详细都不为过, 因为其中坑不少, 所以这里就把第一次实践的步骤贴出来, 以求和大家一起进步
1 Maven 是什么? 能带来什么帮助?
我们在用 Eclipse 开发项目时, 一定会引入支持特定功能的 jar 包, 比如从下图里, 我们能看到这个项目需要引入支持 mysql 的 jar 包
从上图里我们能看到, 支持 mysql 的 jar 包是放在本地路径里, 这样如果在本地运行自然是没问题了但如果我们要把这个项目发布到服务器上, 就会有问题了, 因为在这个项目的. classpath 文件, 已经指定 mysql 的 jar 包在本地 d 盘下的某个路径, 如下图所示
一旦发布到服务器上, 项目依然会根据. classpath 的配置, 从 d 盘下这个路径去找, 事实上服务器上是不可能有这样的路径和 jar 包的
我们也可以通过在. classpath 里指定相对路径来解决这个问题, 在下面的代码里, 我们可以指定本项目将引入本项目路径 / webRoot/lib 目录里的 jar 包
<classpathentry kind="lib" path="WebRoot/lib/jar 包名. jar"/>
这样做, 发布到服务器时, 由于会把整个项目路径里的文件都上传, 所以不会出错但这样依然会给我们带来不便比如这个服务器上我们部署了 5 个项目, 它们都会用到这个 mysql 支持包, 这样我们就不得不把这个 jar 包上传 5 次, 再扩展一下, 如果 5 个项目里会用到 20 个相同的 jar 包, 那么我们还真就不得不做多次复制如果我们要升级其中的一个 jar 包, 那么还真就得做很多重复的复制粘贴动作
期望中的工作模式应该是, 应该有个仓库同一放置所有的 jar 包, 在开发项目时, 可以通过配置文件引入必要的包, 而不是把包复制到本项目里这就是 Maven 的做法
用通俗的话来讲, Maven 是套 Eclipse 的插件, 它的核心价值是能理顺项目间的依赖关系, 具体来讲, 能通过其中的 pom.xml 配置文件来统一管理本项目所要用到的 jar 包, 在项目里引入 Maven 插件后, 开发者就不必手动添加 jar 包了, 这样也能避免因此来带来的一系列问题
2 通过 Maven 开发 Spring Boot 的 HelloWorld 程序
第一步, 创建 Maven 项目本书使用 MyEclipse 作为开发环境, 在其中已经引入了 Maven 插件, 所以我们可以通过 File->New 菜单, 如下图所示, 直接创建 Maven 项目
在上图里, 点击 Next 按钮后, 会见到如下图所示的界面, 在其中我们可以设置 Group Id 等属性
其中, Group Id 代表公司名, 这里设置成 com.springBoot, 而 Artifact Id 则是项目名, Version 和 Packag 采用默认值完成设置后, 能看到新建的项目 MyFirstSpringBoot
第二步, 改写 pom.xml 当我们创建好 Maven 项目后, 能看到 pom.xml 文件在 Maven 项目里, 一般是通过 pom.xml 来指定本项目的基本信息以及需要引入的 jar 包, 这里的关键代码如下
- <groupId>com.springboot</groupId>
- <artifactId>MyFirstSpringBoot</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>MyFirstSpringBoot</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- <version>1.5.4.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
其中, 第 1 到第 4 行的代码是自动生成的, 用来指定本项目的基本信息, 这和我们在之前创建 Maven 项目时所填的信息是一致的
从第 7 到第 19 行的 dependencies 属性里, 我们可以指定本项目所用到的 jar 包, 这里在第 8 和第 13 行分别通过两个 dependency 来指定该引入两类 jar 包其中从第 8 到 12 行, 指定了需要引入用以开发 Spring Boot 项目的名为 spring-boot-starter-web 的 jar 的集合, 而在第 13 到 18 行, 指定了需要引入用以单元测试的 junit 包
从中上述代码里, 我们能见到通过 Maven 管理项目依赖文件的一般方式, 比如在下面的代码片段里, 是通过第 2 到第 4 行的代码, 说明需要引入 org.springframework.boot 这个公司组织 (发布 Spring Boot jar 包的组织) 发布的名为 spring-boot-starter-web 的一套支持 Spring Boot 的 jar 包, 而且通过第 4 行指定了引入包的版本号是 1.5.4.RELEASE
这样一来, 在本项目里, 我们就无需在本地在手动地添加 jar 包, 这些包事实上是在远端的仓库里, 我们这个项目是通过 pom.xml 的配置, 来指定需要引入这些包
第三步, 改写 App.java
在创建 Maven 项目时, 我们指定的 package 是 com.springboot.MyFirstSpringBoot, 在其中会有个 App.java, 我们把这个文件改写成如下的样式
- package com.springboot.MyFirstSpringBoot;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- @RestController
- @SpringBootApplication
- public class App {
- @RequestMapping("/HelloWorld")
- public String sayHello() {
- return "Hello World!";
- }
- public static void main(String[] args) {
- SpringApplication.run(App.class, args);
- }
- }
由于是第一次使用 Maven, 我们在这里再强调一次, 虽然我们没有在项目里手动地引入 jar, 但由于在 pom.xml 里指定了待引入的依赖包, 具体而言需要依赖 org.springframework.boot 组织所提供的 spring-boot-starter-web, 所以在代码的第 2 到第 5 行里, 我们可以通过 import 语句, 使用 spring-boot-starter-web(也就是 Spring Boot)的类库
在第 8 行里, 我们引入了 @SpringBootApplication 注解, 以此声明该类是个 Spring Boot 的应用在第 10 到第 13 行里, 我们通过 @RequestMapping, 指定了用于处理 / HelloWorld 请求的 sayHello 方法, 在第 14 行的 main 函数里, 我们通过第 15 行的代码启动了 Web 服务
至此我们完成了代码编写工作启动 MyFirstSpringBoot 项目里的 App.java, 在浏览器里输入 http://localhost:8080/HelloWorld 由于 / HelloWorld 请求能被第 11 到 13 行的 sayHello 方法的 @RequestMapping 对应上, 所以会通过 sayHello 方法输出 Hello World! 的内容, 如下图所示
从这个程序里我们能体会到开发 Spring Boot 和传统 Spring 程序的不同
第一, 在之前的 Spring MVC 框架里, 我们不得不在 web.xml 定义采用 Spring 的监听器, 而且为了采用 @Controller 控制器类, 我们还得加上一大堆配置, 但在 Spring Boot 里, 我们只需要添加一个 @SpringBootApplication 注解
第二, 我们往往需要把传统的 Spring MVC 项目发布到诸如 Tomcat 的 Web 服务器上, 启动 Web 服务器后我们才能在浏览器里输入请求查看运行的效果, 这里我们只需启动 App.java 这个类即可达到类似的效果, 就可以省去部署到 Web 服务器上的步骤
3 最后是寻求帮助
来源: https://www.cnblogs.com/JavaArchitect/p/8468934.html