网上有很多springboot的入门教程,自己也因为项目要使用springboot,所以利用业余时间自学了下springboot和springcloud,使用下来发现springboot还是挺简单的,体现了极简的编程风格,大部分通用都是通过注解就可以完成,下面就来详细讲解下如何使用springboot来开发一个简单的restful api网关功能,可以提供给H5或者android、ios进行接口开发,还是很方便的。

1. 使用spring initialization创建SpringBoot项目

有很多方法可以快速创建Springboot项目,可以通过idea的springboot initialization来创建,也可以通过手工新建一个maven工程,然后引入springboot的dependency来完成sprignboot的工程导入,还可以通过spring官网的来创建springboot项目,因为有些同学可能没装idea,这里就通过官网的工程初始化指引来创建一个springboot空工程。

  网址 https://start.spring.io   打开网址可以看到下图

在serch for dependency输入web,即可完成基本的restful接口网关的功能,如果要JPA或者oauth安全相关的组件,可以增加rest repository、spring security等相关组件依赖库,spring提供的配套组件还是很多的,基本涵盖了所有应用场合。
加入web组件后,点击下方的绿色按钮Generate Project即可创建一个springboot工程,并且自动下载到本地,接下来直接在idea打开该工程就可以了,在创建的时候可以选择Maven工程或者Gradle工程,这里我们使用了比较熟悉的Maven工程。

2. 工程结构

在idea中打开工程 ,目录结构入下图:

可以看到工程中有maven的pom文件,也自动创建了SpringbootStartApplication.java该类为springboot的启动类,待会儿我们一起看下这个类,先看下maven的pom文件有哪些。这里主要是依赖了springboot的1.4.7版本,目前最新已经更新到1.5.6了,这里没有用最新版本,还是不当小白鼠了,在dependency中依赖了spring-boot-starter-web还有个test测试的组件,如果不写测试代码,可以不使用该test组件,最后还加入了支持springboot的maven plugin组件。

<?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.demo</groupId>
<artifactId>pollydemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>pollydemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

刚看完了pom文件,在导入工程的时候,ide一般会自动导入依赖库,在国内访问maven的依赖库速度感人,建议使用阿里云的maven镜像服务器,或者使用公司的maven私服,如果公司没有私服或者自己学习可以直接使用阿里云的镜像速度还是不错的,maven setting.xml中需要添加mirror地址,具体如何配置这里就不详细描述了,可以自行百度,这里也顺便附上阿里云maven地址:

<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

   配置好了pom后,我们一起看下自动生成的Application.java这个类相当于我们程序的main函数入口,这里再顺便介绍下因为springboot集成了Tomcat和Jetty,默认使用Tomcat作为应用容器,开发者只需要将工程打成jar包直接丢到服务器上就可以执行了,不需要再单独部署到was、jboss、tomcat这些应用服务器上。
SpringBootStartApplication.java

@SpringBootApplication
public class PollydemoApplication { public static void main(String[] args) {
SpringApplication.run(PollydemoApplication.class, args);
}
}

  所有的springboot application启动类都需要在类级别上加上@SpringBootApplication注解,其他参数不用任何调整,后续可以把一些初始化的动作放到该类中进行,目前本例中就不加其他的启动加载项了。
这样一个api网关的架子就搭好了,是不是很简单!下面我们就可以将主要精力聚焦在业务逻辑代码上了,这里为了简化程序,不会将项目进行深入的分层设计,在实际项目中,一般都会对项目进行分层设计,如果是api网关,没有view层但是起码也会有对外接入decontroller层、处理业务逻辑的service层、处理数据持久化的dao层,同时也会有一些POJO业务实体类,这里就不详细展开了,后续也会对互联网架构设计进行详细讲述,这里我们只创建了一个UserController类,里面只有获取用户信息的方法,分别根据参数和请求方式的不同用三种方法进行了重写,下面就来一一道来。

先来讲述下最简单的使用get请求用户信息的实现方式,代码如下,写好后直接在Application类点击右键有个RunAs,点击后会自动运行,运行成功后可以使用http发包工具进行测试,这里推荐使用chrome的postman或者使用firefox的httprequester插件,都是比较简单的发包工具,get请求的上送为http://localhost:8081/springboot/getUserByGet?userName=feiweiwei

/**
* 用户
* <p>
* 1.
* </p>
*
* @author pollyLuo
* @version 1.0.0
* @date 2018-09-11
*/
@RestController
@RequestMapping(value = "/user/")
public class UserController { @ResponseBody
@RequestMapping(value = "getUser", method = RequestMethod.GET)
public String getUser(@RequestParam(value = "userName") String userName) {
return "hello:" + userName;
}
}

 指定端口与项目名称,修改配置文件 (application.properties)

server.port=8090
server.servlet.context-path=/polly-demo

Spring Boot 更换 Banner

我们先来回顾一下在 Spring Boot 1.0 中如何更换启动 Banner,其实都很简单,只需要在src/main/resources路径下新建一个banner.txt文件,banner.txt中填写好需要打印的字符串内容即可。

一般情况下,我们会借助第三方工具帮忙转化内容,如网站http://www.network-science.de/ascii/将文字转化成字符串,网站:http://www.degraeve.com/img2txt.php可以将图片转化成字符串。

  

 转载于:https://blog.csdn.net/liutong123987/article/details/79385513

最新文章

  1. MyEclipse打不开jsp文件 报错“Failed to create the part&#39;s controls&quot;
  2. canvas画布属性globalAlpha 和 createRadialGradient函数出现的设置问题
  3. Redis设计与实现-主从、哨兵与集群
  4. MongoDB - Introduction to MongoDB, MongoDB Extended JSON
  5. IOS 模仿TableView封装
  6. poj 1904 King&#39;s Quest tarjan求二分图的所有可选最大匹配边
  7. HTML Meta, http-equiv, Refresh
  8. r语言之生成随机序列,随机数生成函数及用法
  9. JavaHTTP下载视频
  10. JS实例——间歇循环滚动
  11. Docker - Failed to connect to localhost port 4000: Connection refused
  12. linux查看文件内容的常见命令
  13. Linux安装gitbook
  14. mac电脑安装wxPython2.8.12.1不成功怎么办 , Could not find a version that satisfies the requirement 2.8.12.1
  15. Cannot resolve classpath entry: /Program Files/IBM/SQLLIB/java/db2java.zip
  16. signal &amp; slot
  17. property 、classmethod 、 staticmethod 的用法
  18. JAVA 第二周学习总结
  19. 使用Xstart远程图形化Linux
  20. Oracle中查询表字段基本信息、主键、外键(整理)

热门文章

  1. Linux Mint 19.1 安装 Docker 过程笔记
  2. 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集 标签: vb.net继承 2015-05-02 15:19 1012人阅读
  3. Django ORM------Mysql
  4. SDUT-3331_数据结构实验之链表八:Farey序列
  5. hdu 5793 A Boring Question(2016第六场多校)
  6. 关于RESTful一些注意事项,和自己整理的接口开发规范
  7. poj 3334 Connected Gheeves (Geometry + BInary Search)
  8. 洛谷P4018 Roy&amp;October之取石子 题解 博弈论
  9. SuperSocket AppServer 的两个事件: NewSessionConnected 和 SessionClosed
  10. Laravel根据Ip获取国家,城市信息