基于springboot微服务项⽬的⽗⼯程、common模块的构建
概述
以微服务项⽬的⽅式,对软件体系进⾏⼀个简单的探究,简略说明,为什么这样做,软件中这样做的原因是什么,结合⼀定的案例给出。
⽗⼯程
对于⽗⼯程模块中重要的是其中的pom⽂件,在微服务体系下,不能够过多,⽐如在⼦模块中会⾃⼰引⼊的,就不要在⽗⼯程的pom⽂件中引⼊,避免⽗⼯程承担过多的责任,更多的引⼊权应该交给⼦模块,让⼦模块更能⾃治。
⽗⼯程pom⽂件
在pom⽂件中便是简单的引⼊⼀些必须的依赖,过多、繁杂的依赖并没有引⼊。项⽬是基于springboot的,⽽springboot⼀些基础jar包是在⼀个叫parent标签的依赖中配置的。所以,springboot的parent是必须的。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
<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>
</dependencies>
⼦⼯程pom⽂件
在⼦⼯程中会引⼊common模块,及⼯程所需要的依赖。⼀般来说,必须的依赖有,mysql连接驱动jar包,dao层所⽤框架的jar包,及common包,这⾥使⽤的是mysql、mybatis-plus,所以,引⼊了mysql驱动包,mybatis-plus相关jar包。要是不知道mybatis-plus的需要什么jar包,可以到mybats-plus官⽹上⾃⾏查。
建议的话使⽤官⽹上的jar依赖,有时候可能会导致,org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 问题
对于⼦⼯程模块的构建,⼀般⽣成完Module后,⼀般要做的事是引⼊pom⽂件、配置l、使⽤easycode等⾃动⽣成代码、在启动类中@MapperScan(“uit.dao”)配置接⼝扫描。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<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>
<!--简化代码的⼯具包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--mybatis-plus的springboot⽀持-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<artifactId>tensquare_common</artifactId>
<groupId>com.itctest</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
common模块
对于common模块,也是公共模块,和⽗⼯程有着较多的相似性,其较⼤的作⽤在于为其他模块提供 共⽤ 类,但不牵扯到其他模块的具体业务逻辑。如果在⼀开始模块划分的时候并未划分出common模块,那么可以将全部模块中共⽤的类抽取出来,放⼊到common模块中,然后在各个模块引⼊common模块jar包。完成对项⽬⼯程的改造。
在前后端分离的微服务中,公共模块,⼤多承担的⾓⾊是,根据前端所需返回的数据类型,定义出⼀个或⼏个共同的类,满⾜前端类型所需,那么在controller层对数据进⾏返回的时候,根据所需返回相应类型即可。
通常来说,前端需要返回的类型有状态码code–⽤于标识状态成功、失败等状态,提⽰信息message–⽤于说明状态码怎样,⽐如添加成功、查询成功等,以及返回数据data,需要返回的数据。
那么要怎么选择数据的具体类型呐?⼀般来说,code可以选⽤数据Integer,message选String,⽽data因为要保存各种对象的数据,为此可以考虑泛型或者所有类的⽗类Object,使⽤泛型的时候记得在类上加声明。
在创建类的时候可对code、message提供⼀个构造函数,对code、message、data提供⼀个构造函数,⽅便返回调⽤。
⽬录结构
说明:
pageResult:⽤于返回分页对象
Result:通⽤分页对象
StatusCode:定义状态码,可对项⽬代码进⾏解耦
后端代码
private boolean flag;
private Integer code;
private String message;
private Object data;
public Result(){
}
//增删改
public Result(boolean flag, Integer code, String message){
this.flag = flag;
}
//
public Result(boolean flag, Integer code, String message, Object data){ this.flag = flag;
this.data = data;
}
public void setFlag(boolean flag){
this.flag = flag;
}
public void setCode(Integer code){
}
public void setMessage(String message){
}
public void setData(Object data){
this.data = data;
}
public boolean isFlag(){
return flag;
}
public Integer getCode(){
return code;
}
public String getMessage(){
return message;
}
public Object getData(){
return data;
}
}
前端的可能代码
没有data的Result对象
{
"code":0,
"flag":true,
"message":"string"
}
有data的Result对象
{
"code":0,
"flag":true,
"message":"string",
"data":[
{
"id":"string",
"labelname":"string",
"state":"string",
"count":0,
"recommend":"string"
}
]
}
有分页的Result对象,通常可以PageResult可以配合Result对象使⽤
{
"code":0,
"flag":true,
"message":"string",
springboot框架的作用
"data":{
"total":0,
"rows":[
{
"id":"string",
"labelname":"string",
"state":"string",
"count":0,
"recommend":"string"
}
]
}
}
ps:以上代码均⾮原创,仅供学习使⽤,如有侵权请联系删除

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。