基于SpringBoot的微服务与“头文件”
来源:互联网 发布:项目经理考试软件app 编辑:程序博客网 时间:2024/06/18 04:08
有C编程经验的同学应该对头文件都很熟悉,Java中的package也起到了类似的功能。当系统被拆分为多个微服务时,我们需要将各服务共用的class,和interface抽出来组成一个jar包,这样既简化了微服务系统的开发,又有利于系统的扩展。
本文使用User微服务来进行示例说明,文中所使用的java版本为1.8.0_40,gradle版本为2.10。
1.创建api.jar
api.jar即系统各微服务共用的jar包。
首先创建一个基于gradle的java工程,具体方法见《springboot+gradle 构建多模块项目》。
创建好的项目结构如下:
接下来修改根目录下的build.gradle,
buildscript { repositories { mavenLocal() maven { url "http://maven.aliyun.com/nexus/content/groups/public" } maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } jcenter() } dependencies { classpath('com.github.jengelman.gradle.plugins:shadow:1.2.4') }}apply plugin: 'idea'apply plugin: 'java'apply plugin: 'maven'apply plugin: 'com.github.johnrengelman.shadow'group = 'com.formularoom'archivesBaseName = 'api'version = '1.0.0'jar { baseName = archivesBaseName}shadowJar { baseName = archivesBaseName classifier = null version = version}// JVM 版本号要求sourceCompatibility = 1.8targetCompatibility = 1.8// java编译的时候缺省状态下会因为中文字符而失败[compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'ext { lombokVer = '1.16.8' libPath = "file:" + new File(rootProject.rootDir, '../Libs').getAbsolutePath().toString()}repositories { mavenLocal() maven { url "http://maven.aliyun.com/nexus/content/groups/public" } maven { url "http://nexus.mvnsearch.org/content/repositories/releases/" } maven { url "http://nexus.mvnsearch.org/content/repositories/snapshots/" } mavenCentral() jcenter() maven { url "http://repo.spring.io/snapshot" } maven { url "http://repo.spring.io/milestone" } maven { url 'http://maven.springframework.org/release' } maven { url 'http://maven.springframework.org/milestone' }}dependencies { compile( "org.projectlombok:lombok:$lombokVer" ) testCompile( )}jar { manifest { attributes("Implementation-Title": "Gradle") }}allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } }}uploadShadow { repositories.mavenDeployer { repository(url: libPath) }}
以上配置中,第一个需要注意的是,引入了maven plugin,它可以给api.jar添加group和version信息,并按照中央仓库中对jar包的要求,给api.jar添加上描述信息,便于其他微服务引用。另外maven plugin提供了将jar包上传到中央仓库的task,通过它,我们可以将api.jar上传到指定的目录,如上述配置中的libPath ,就是作为中央仓库使用的目录,它与其他服务的目录关系如下图所示。
第二个需要注意的是,引入了shadow plugin,它主要是将jar包的依赖一起打包,生成一个uber-jar。uploadShadow是此plugin提供的方法,用来将jar提交到中央仓库。
2.添加user service的信息到api.jar
添加User.java,示例代码如下:
package com.formularoom.user;import lombok.Data;import lombok.NoArgsConstructor;import java.io.Serializable;@NoArgsConstructor@Datapublic class User implements Serializable { private long id; private String userName; private String email; private String password; private long created_at; private long updated_at;}
@NoArgsConstructor和@Data是lombok提供的注解,可以帮我们生成get/set函数。
添加UserService.java
package com.formularoom.user;import java.util.List;public interface UserService { long count(); String createUser(User user); String editUser(User user); String deleteUser(long userId); String resetPassword(long userId, String password); List<Long> getUserIdLst(); List<User> getUserLst(); User getUserById(long id);}
添加完代码后,可使用intelliJ idea中所提供的gradle panel完成编译,打包,提交的动作,如下图所示,
上传完成后,Libs目录的结构如下:
至此,api.jar已完成,至于再其他项目中如何使用,会在下一篇博客中进行示例讲解。
完整的示例代码,可从此处 获取。
交流群号,255489119。
- 基于SpringBoot的微服务与“头文件”
- 基于SpringBoot的微服务架构实践
- 基于springboot的微服务shell脚本启动job工程
- SpringCloud微服务系列(2): 创建一个基于Springboot的RESTFul服务
- SpringBoot--5分钟搭建的微服务
- springboot微服务
- springboot构建微服务
- 云端基于Docker的微服务与持续交付实践
- 云端基于Docker的微服务与持续交付实践
- 基于docker的微服务容器化与编排
- 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker
- 微服务,微架构[五]之springboot读取properties文件
- SpringBoot开始微服务架构
- SpringBoot集成MyBatis(微服务)
- 微服务springBoot项目搭建
- SpringBoot搭建微服务HelloWorld
- 搭建Jenkins+SpringBoot+Docker的微服务持续集成框架
- centos7下systemctl管理springboot微服务的基础配置
- 8天学通MongoDB——第二天 细说增删查改
- Kmeans python 可视化
- thinkphp怎样获取控制器名称和操作名称(不是在模板里面获取)
- *指针_函数指针、指针控制数组、链表(结构体指针)
- leetcode-329. Longest Increasing Path in a Matrix
- 基于SpringBoot的微服务与“头文件”
- tomcat 远程调试配置
- MySql 外键
- highcharts绘制饼图html页面源码
- 解决easyUI跨域问题
- Redis集群搭建与简单使用
- 昨天没做出来的一道题目,不难,但是一直出现段错误
- Fade数字切换动效
- S5PV210的uboot启动过程(知识结网)