Springboot架构设计(⼀)
本来⼀直做Android设计,因为⼯作需要⽬前负责Java后端。主要使⽤的框架是SpringBoot。⾃⼰习惯在做项⽬的时候进⾏架构设计,实现低耦合,⾼灵活,快速开发。研究的时间不长,⽬前做了⼀个简单的Java SpringBoot项⽬架构,简单梳理⼀下。
⼀、建⽴项⽬的时候把Mysql选上,创建项⽬之后需要添加数据库连接信息。数据库是提前创建好的。连接信息可以写在
application.properties⽂件中,也可以建⽴⼀个配置类进⾏设置;
⼆、配置服务器容器。项⽬默认使⽤的是Intellij Idea⾃带的虚拟容器,我们调试使⽤的是外部安装的Tomcat,所以要配置Artifacts,把项⽬发布到外部Tomcat的站点当中,⼀定要把后加的包都添加进去;
三、Application.java是启动⽂件,向导已经创建好了,要在外部成功访问,我们需要完善⼀下:
@SpringBootApplication
@EnableJpaRepositories(basePackages = "iyue", repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class)
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication springApplication=new SpringApplication(Application.class);
springApplication.run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
除了main⽅法,其他⽅法都是可以放在另外的类中去管理的。
四、讲⼀下分包,这是我的基本分包
bean:存放实体类,期中⼜分为base、entity、parameter、protocol四个。
bean/base:存放⼀些固定规范的类,⽐如我们⾃定义的分页模型;
bean/entity:存放根据数据库表映射过来的实体类,以及数据打包需要的实体类;
bean/parameter:⽤body⽅式请求时需要添加的参数解析实体类;
bean/protocol:数据请求和返回规范性数据结构的实体类,⽐如固定参数,请求体结构,返回体结构
等等。
以下是四种规范性的实体类:
1.分页模型:
public class PageModel<DataType> {
public int page;//当前页码
public int pageSize;//页⾯⼤⼩
public long count;//数据总数
public boolean hasNext;//是否还有下⼀页
public List<DataType> dataList;//数据列表
public PageModel() {
}
public PageModel(int page, int pageSize) {
this.page = page;
this.pageSize = pageSize;
}
public PageModel(int page, int pageSize, long count) {
this.page = page;
this.pageSize = pageSize;
}
public PageModel(int page, int pageSize, List<DataType> dataList) {        this.page = page;
this.pageSize = pageSize;
this.dataList = dataList;
}
}
2.固定参数(⾃定义)
public class NetProtocol {
private String ver;
private String os;
private String channel;
private String token;
private double lng;
private double lat;
public String getVer() {
return ver;
}
public void setVer(String ver) {
this.ver = ver;
}
public String getOs() {
return os;
}
public void setOs(String os) {
this.os = os;
}
public String getChannel() {
return channel;
}
public void setChannel(String channel) {        this.channel = channel;
}
public String getToken() {
return token;
}
public void setToken(String token) {
}
public double getLng() {
return lng;
}
public void setLng(double lng) {
this.lng = lng;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
}
3.请求体footer定义什么
private NetProtocol protocol;//固定协议参数    private ParaType params;//⾃定义参数
public NetRequest() {
}
计算机c语言入门自学public NetProtocol getProtocol() {
return protocol;
}
public void setProtocol(NetProtocol protocol) {        this.protocol = protocol;
}
public ParaType getParams() {
return params;
}
public void setParams(ParaType params) {        this.params = params;
idea配置artifacts}
}
4.返回体
private int code;//错误码 0:请求成功
private String msg;//消息
private DataType data;//数据体
public NetResult() {
}
public NetResult(int code, String msg) {
this.msg = msg;
}
public NetResult(int code, String msg, DataType data) {
vmware虚拟机使用教程安装win7
this.msg = msg;
this.data = data;
}
simulink中文设置在哪
public int getCode() {
return code;
}
public void setCode(int code) {
}
public String getMsg() {
return msg;链接下载音乐免费
}
public void setMsg(String msg) {
this.msg = msg;
}
public DataType getData() {
return data;
}
public void setData(DataType data) {
this.data = data;
}
}
config:存放配置类,可以根据需要把配制⽅法写⼊⼀个类,也可以根据分类写到各⾃的⽂件中。其下还分为filter、interceptor和listener 三个⽂件夹,分别存放⾃定义的过滤器、和;
constants:专门存放常量的地⽅,其下有⼀个sql⽂件夹,专门设计存放各个数据类型的Repository(DAO层)需要进⾏数据操作的SQL 语句;
library:与项⽬⽆关的库,这是架构的核⼼,是可以移植的。
library/custom:⾃定义的Repository、Service和Controller,全部都是预封装实现解耦和快速开发的;
library/model:与项⽬⽆关的通⽤的实体类,⽐如⼀些常见的body参数解析类:

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