一个项目为什么需要多个Routes对象?

看了下Jfinal3.2的源代码,一个Routes对象相当于一个路由列表,但是Routes类不是单例的,那一个Jfinal项目为什么需要多个路由列表呢?还有前端路由和后端路由是什么东西?

/*******分割线********/

Routes类中有一个静态成员routesList,用来保存项目中所有的路由列表,但是从类的设计上来说,我觉得下面的add方法应是static方法比较合理,因为其目的是向routesList中添加路由列表,而不是向路由列表中添加一条路由记录

/**
	 * Add Routes
	 */
	public Routes add(Routes routes) {
		routes.config();
		routesList.add(routes);   //添加一个路由列表,但是这个方法为什么是实例方法,而不是static方法?
		return this;
	}

评论区

JFinal

2018-03-28 20:34

Routes 划分有很多好处:
1:当你的项目足够大时,通常是多人一起开发,可以是一人分一个 Routes,开发时各自改自己的 Routes,在 git 或 svn 提交时不会产生版本冲突

2:每个 Routes 可以独立配置 routes 级别的拦截器,这类拦截器会拦截所有在该 Rotues 中注册的所有 Controller 中的所有 action,这样可以减少大量拦截器配置代码,

例如你的后台需要一个 AdminInterceptor 专门进行后台用户的权限控制,而你前台的 FrontInterceptor 可以专门处前台的拦截

3:有利于模块化

4:可以将所有路由配置拆分至独立的 Routes 类中,避免 YourJFinalConfig 中的代码过多,有助于代码可读性

当然,你完全可以不去拆分,直接用也可以

LongLee力

2018-03-28 21:06

@JFinal 明白了~

热门反馈

扫码入社