背景
目前各系统之间的数据交互越来越频繁,频繁的给项目增加接口不仅增加整个系统的负担,还给开发人员麻烦,开发效率低,日常维护起来更是嫌弃;最近几年Spring微服务非常火,基于Spring Boot的Spring Cloud已经成为一站式微服务框架;准备入手Spring Cloud;首先从Spring Boot下手,使用Spring Boot写了个通用型的第三方接口功能,目前主要用于查询数据抛给调用者;其实也比较简单,主要就是实现业务逻辑,对于访问数据层是直接使用以前项目访问的方式,打成jar包,直接依赖使用等等;然后就是定义一下接口的规范,过滤掉一部分URL,输入的URI必须包含指定访问哪个数据库,条件可选;输出必须让调用者知道调用接口后的结果,尽可能简单明了;至于调用者需要哪些数据则需要双方协调沟通,配置好sql语句;尽可能实现调用者的需求。
具体实现
一、前提条件
1.安装JDK8或以上(springBoot 2.X版本)
2.开发工具(Eclipse或IDEA等,本次使用的Eclipse)
3.Spring开发套件工具(springsource-tool-suite)
4.apache-maven
二、开发准备
1.eclipse中安装Spring开发套件工具(下载时注意查看eclipse版本对应的springSource-tool-suite版本)
使用SpringSource-tool-suite插件是为开发Spring应用程序而定制的,它提供一个随时可用的环境来实现调试、运行和部署Spring应用程式,插件(sts3版本)集成了Pivatal tc Server(企业级的轻量java应用服务器,拓展了Apache Tomcat;可以说是企业版本的Apache Tomcat)、Pivotal Cloud Foundry(PCF是一个统一的多云平台,可以运行你的企业应用程序)、Git(分布式版本控制系统)、Maven(项目管理工具)、AspectJ(面向切面的框架AOP,拓展了java语言)等等。
1.1离线安装springSource-tool-suite
(1)下载(地址:https://spring.io/tools3/sts/all)
(2)打开Eclipse–>help–>install New Software…
(3)直接默认下一步Next,等待安装完成即可;安装完成之后就可以建Spring项目了。直接输入相关名称,然后默认下一步Next即可完成。
三、开发过程
(1)Spring Boot项目结构
主要用到几个目录和文件:
1)src/main/java目录:建java项目文件等等;其中包含主程序入口xxxxApplication.java文件,通过直接运行该类来启动Spring Boot应用
2)src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等等,也可以存放一些静态资源,如一些图片、CSS文件、template模板文件等等;
3)src/test/java:单元测试目录,生成的xxxxApplicationTests通过JUnit4实现,可以直接运行Spring Boot进行测试。
4)application.properties:用于存放程序的各种依赖模块的配置信息,比如服务端口,数据库连接配置等等;目前
设置了第三使用方接口服务端口server.port=10101。
5)pom.xml:maven项目文件,主要用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的URL、项目的依赖关系。
(2)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/maven-v4_0_0.xsd">
<!--
POM的版本
-->
<modelVersion>4.0.0</modelVersion>
<!--
含义:组织标识,定义了项目属于哪个组
用途:此名称则是本地仓库中的路径
命名规范:项目名称,模块,子模块
-->
<groupId>com.demo</groupId>
<!--
含义:项目名称也可以说你所模块名称,定义当面Maven项目在组中唯一的ID
用途:例如:filter,在M2_REPO目录下,将是:com/demo/filter对应下的目录
命名规范:唯一就好
-->
<artifactId>filter</artifactId>
<!--
含义:项目当前的版本号
用途:例如:0.0.1-SNAPSHOT,在M2_REPO目录下,将是:com/demo/filter/0.0.1-SNAPSHOT目录
-->
<version>0.0.1-SNAPSHOT</version>
<!-- 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par -->
<packaging>war</packaging>
<!-- 元素声明了一个对用户更为友好的项目名称 -->
<name>Spring-Boot-Demo</name>
<!-- 依赖继承的父类的jars -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.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>
<springfox.version>2.2.2</springfox.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<skipTests>true</skipTests>
</properties>
<!--
依赖的额外jar包 ,根据自己实际需要去依赖,如果maven的中央库有就直接去取;
本地仓库需要自己指定或直接导到项目目录,依赖指定位置即可,groupId、artifacId和version名字随便取
-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId