既然本专题是要带大家一步步搭建自己的企业级框架。那么大家首先要理解框架本身的概念。
让我们先从5W1H的思维方法入手。
- Why(为什么):为什么要使用框架,我直接基于springboot搭建应用不就行了?
- What(什么):框架是什么,跟我理解的架构有什么关系?
- Where(在哪里):在哪里使用,是不是任何一个java后端应用都可以套用?
- When(什么时候):什么时候让业务研发接入我搭建的框架?
- Who(谁):谁可以使用?
- How(如何):如何搭建一套行之有效的企业级框架?
1.框架是什么?
既然人人都在谈架构,那框架和架构之间有什么关系呢?首先看两者的概念:
软件架构: 通常我们提起架构,主要是针对软件的架构。软件架构,也称为软件体系结构。简单来说,它就是一个蓝图,是一种设计方案,将客户的不同需求抽象成为抽象组件,并能描述这些抽象组件之间的通信和调用的关系。进一步来说,架构就是对软件设计理论进行落地的产物。
框架: 软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统,而是一个半成品,是一个提供了诸多服务,供开发人员进行二次开发,实现具体功能的应用系统。注意:框架是一个可供二次开发的程序实体。
框架关注的是“规范”,架构关注的是“结构”。
框架的英文是Framework,架构的英文是Architecture,Spring MVC的英文文档标题就是“Web MVC framework”。
比如,特定领域软件有一些共性部分形成的软件架构,将这个共性的软件架构开发出来,形成一个可供二次开发的程序实体,这个程序实体就是软件框架。 可供二次开发。如Spring框架等。
2.谁来使用?
既然框架是基于不同应用提取的共性部分,那使用到这些公共功能的应用就可以使用。
3.哪里使用?
这里涉及到框架的使用范围。比如SpringBoot框架是具有普适性的框架存在,只要基于java开发的互联网金融企业都可以使用。但一般情况下,针对某个公司定制的框架就仅限在公司内部使用。因为每个公司的业务场景不一样。
4.什么时候使用?
这个涉及到架构演化和框架迭代的问题。于我而言 ,企业内部研发框架越早打造,越早使用越好。只不过前期功能可以简单点(比如,人力上可能不允许),哪怕只是套个壳也行,后续不断迭代功能即可。
5.为何要使用?
从前面框架的定义,我们就可以看到框架解决的是共性问题。既然是共性问题,就自然有它的好处:
a.统一标准:隐藏实现细节,降低开发难度,做到代码复用,解耦业务与非业务代码,让程序员聚焦业务开发。
比如笔者之前提到的文章:
MapStruct升级遇到的问题及其解决方案--CSDN博客
可见,共性的问题,都可以在框架层面解决。
b.统一规范:框架实际上也是一种规范。它可以对开发进行统一的约束,让每位开发人员保持同样的编码风格。比如规定所有的DTO都要实现统一基类,便于AOP处理,通过框架就可以这样做:
/**
* 业务传输对象基类
*/
public class BaseDTO implements Serializable {
private static final long serialVersionUID = -23423423L;
}
6.如何搭建框架
还记得我之前说的架构的“道法术”吗?
接下来,我会通过专栏的方式,教大家详细了解框架建设的“法”和“术”。