利用Maven入手Spring Boot第一个程序详解

 更新时间:2018年02月25日 17:24:58   作者:hsm_computer  
这篇文章主要给大家介绍了关于如何利用Maven入手Spring Boot第一个程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

学习一个新技术,先别管他的原理啊,流程啊,怎么组织代码啊什么的。直接从官网或者博客抄一个小demo,自己亲自跑一遍,然后再去看那一堆让人头皮发麻的讲解,就能相对容易的看懂了。

目前网上有不少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服务器上的步骤。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 图解Java中插入排序算法的原理与实现

    图解Java中插入排序算法的原理与实现

    插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。本文将通过图片详解插入排序的原理及实现,需要的可以参考一下
    2022-08-08
  • Spring的CorsFilter会失效的原因及解决方法

    Spring的CorsFilter会失效的原因及解决方法

    众所周知CorsFilter是Spring提供的跨域过滤器,我们可能会做以下的配置,基本上就是允许任何跨域请求,我利用Spring的CorsFilter做跨域操作但是出现报错,接下来小编就给大家介绍一Spring的CorsFilter会失效的原因及解决方法,需要的朋友可以参考下
    2023-09-09
  • 详解 Java继承关系下的构造方法调用

    详解 Java继承关系下的构造方法调用

    这篇文章主要介绍了详解 Java继承关系下的构造方法调用的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • Java如何获取数组和字符串的长度(length还是length())

    Java如何获取数组和字符串的长度(length还是length())

    这篇文章主要介绍了Java如何获取数组和字符串的长度(length还是length()),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Spring MVC项目开发踩过的一些bug

    Spring MVC项目开发踩过的一些bug

    这篇文章主要给大家介绍了关于Spring MVC项目开发踩过的一些bug,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 详解springMVC之与json数据交互方法

    详解springMVC之与json数据交互方法

    本篇文章主要介绍了详解springMVC之与json数据交互方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • JAVA中excel导出一对多合并具体实现

    JAVA中excel导出一对多合并具体实现

    项目中经常会使用到导出功能,有导出Word,有导出Excel的,下面这篇文章主要给大家介绍了关于JAVA中excel导出一对多合并具体实现的相关资料,需要的朋友可以参考下
    2023-09-09
  • 详解Spring Boot 目录文件结构

    详解Spring Boot 目录文件结构

    这篇文章主要介绍了Spring Boot 目录文件结构的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • BaseMapper接口的使用方法

    BaseMapper接口的使用方法

    这篇文章主要介绍了BaseMapper接口的使用方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • 深入探讨Java超时自动取消的实现方案

    深入探讨Java超时自动取消的实现方案

    在复杂的分布式系统中,超时控制是保障系统稳定性和可用性的关键机制,本文将深入探讨Java中实现超时自动取消的多种方案,希望对大家有所帮助
    2024-11-11

最新评论