欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-28 14:52:27
前言 学习一个新技术,先别管他的原理啊,流程啊,怎么组织代码啊什么的。直接从官网或者博客抄一个小demo,自己亲自跑一遍,然后再去看那一堆让人头皮发麻的讲解,就能相对容易...

前言

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

目前网上有不少spring boot的入门文章,都很有帮助,本人最近在深入学习spring cloud,在搭建第一个hello world程序时,感觉对于新手而言,介绍文章怎么详细都不为过,因为其中坑不少,所以这里就把第一次实践的步骤贴出来,以求和大家一起进步。

1、maven是什么?能带来什么帮助?

    我们在用eclipse开发项目时,一定会引入支持特定功能的jar包,比如从下图里,我们能看到这个项目需要引入支持mysql的jar包。

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

从上图里我们能看到,支持mysql的jar包是放在本地路径里,这样如果在本地运行自然是没问题了。但如果我们要把这个项目发布到服务器上,就会有问题了,因为在这个项目的.classpath文件,已经指定mysql的jar包在本地d盘下的某个路径,如下图所示。

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

一旦发布到服务器上,项目依然会根据.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项目。

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

在上图里,点击“next”按钮后,会见到如下图所示的界面,在其中我们可以设置group id等属性。

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

其中,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!的内容,如下图所示。

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

从这个程序里我们能体会到开发spring boot和传统spring程序的不同。

第一,在之前的spring mvc框架里,我们不得不在web.xml定义采用spring的监听器,而且为了采用@controller控制器类,我们还得加上一大堆配置,但在spring boot里,我们只需要添加一个@springbootapplication注解。

第二,我们往往需要把传统的spring mvc项目发布到诸如tomcat的web服务器上,启动web服务器后我们才能在浏览器里输入请求查看运行的效果,这里我们只需启动app.java这个类即可达到类似的效果,就可以省去部署到web服务器上的步骤。

总结

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