一、拦截器与过滤器
我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是有的。在对比两者的区别之前,先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象的编程过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,统一记录日志功能,面向对象是无法解决的。所以AOP--面向切面编程其实就是对面向对象编程的一个补充。过滤器和拦截器都属于面向切面编程的具体实现。
1、 《Filter》 过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前
2、《WebMvcConfigurer》拦截器可以获取IOC容器中的各个bean,而过滤器就不行,应为拦截器是Spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需要依赖servlet api,不需要依赖spring。
平台系统服务部分
一、需求场景
1.多个App支持
(1) 平台对多个App的接入和收集app信息
a App信息包括有,App的名称,App的所属行业,App的所有者
2.平台Api资源的描述
(1) 管理和描述平台的api,对api的授权提供支持
3.命名空间的管理
(1)引入命名空间对多App接入提供支持,在某个业务中对多个App的数据隔离和复用
4.代码字典统一管理
(1) 管理codeDictionary,提供统一的类型管理
二、平台系统服务设计
1.
(1)平台系统服务的思想
app 是基于平台上的上的一个或者多个应用,可以为不同类型的应用。如:安卓App,IOSApp,Web端应用,微信小程序等。
scope(命名空间)和app绑定的在某个业务之中,多个app可以共享该空间的数据。scope 的设计主要为了使多个App对平台的数据在某个业务中的一个共同的区域对数据重复使用。 引入scope可以实现在多App接入到平台时对在某个业务中资源的隔离功能,该scope范围内,并可为依附的app提供绑定的资源,可灵活调整app的应用命名空间范围。
(a)、应用初始化的过程关联到app,scope,app_scope
(b)、应用初始化新建app,查询scope为空的情况,默认返回__default_scope(全局)
备注:
(i)app1 和 app2共享用户业务Scope1的内容,即app1和app2共享Scope1和Scope2的用户
(ii)一个app在一个业务仅仅允许一个scope
(2)Api资源描述平台的api是否需要Bas平台鉴权,应用鉴权,用户认证,用户授权。api的使用classify对api按业务组织。对classify使用service(服务)组织。
(a)、api组织关系
![]()
备注:
api按照 服务类型-> 类别 —> api组织管理
(b)、api授权关系
![]()
备注:
平台首先判断某app是否具有某服务的权限,再判断该app是否具有该服务下某个api的权限
(3)代码字典是对平台上的各种类型的统一管理,集中维护在CodeDictionary。
2. 业务内容
(1)与业务相关的实现
具体流程
a、在api层面多个app访问时,app传入appId到scope模块。
b、scope模块查询appId所对应的scopeId。