无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程

 

Routes表示的是JFinal框架所有的路由。可以自定义路由规则,比如利用注解的自动扫描路由器;或者自己定义前端和后端的路由器。

Routes在Config类中定义了一个空的Routes对象,这个对象在configJFinal方法中被传入configRoute方法。

 

static void configJFinal(JFinalConfig jfinalConfig) {
		jfinalConfig.configConstant(constants);				initLoggerFactory();
		<strong>jfinalConfig.configRoute(routes);</strong>
		jfinalConfig.configPlugin(plugins);					startPlugins();	// very important!!!
		jfinalConfig.configInterceptor(interceptors);
		jfinalConfig.configHandler(handlers);
	}

configJFinal方法在JFinal的init方法中被调用

 

 

<pre name="code" class="html">boolean init(JFinalConfig jfinalConfig, ServletContext servletContext) {
		this.servletContext = servletContext;
		this.contextPath = servletContext.getContextPath();
		
		initPathUtil();
		
		<strong>Config.configJFinal(jfinalConfig);	// start plugin and init logger factory in this method</strong>
		constants = Config.getConstants();
		
		initActionMapping();
		initHandler();
		initRender();
		initOreillyCos();
		initTokenManager();
		
		return true;
	}

 

 

 

 

而这个JFinalConfig就是我们需要继承的抽象类,它有个方法就是

 

 

public abstract void configRoute(Routes me);

我们在我们的继承类中可以调用Routes的

public Routes add(String controllerkey, Class<? extends Controller> controllerClass) {

方法添加路由,也可以调用

public Routes add(Routes routes) {

添加我们自己的路由器,该方法中,首先会调用我们路由器的config(这是个抽象方法)方法,这样我们就能配置好我们的路由规则。

public Routes add(Routes routes) {
		if (routes != null) {
			<strong>routes.config();	// very important!!!
			map.putAll(routes.map);
			viewPathMap.putAll(routes.viewPathMap);</strong>
		}
		return this;
	}

在config方法中,我们可以调用

public Routes add(String controllerkey, Class<? extends Controller> controllerClass) {

等方法配置路由,这个路由从哪儿来,当然就是我们的事儿了。

 

 

下面以AutoBindRoutes为例,剖析一下。

在public class Config extends JFinalConfig{的

public abstract void configRoute(Routes me);

方法中,me.add(new AutoBindRoutes());可以配置路由器。

 

而AutoBindRoutes 的主要代码为:

 

public class AutoBindRoutes extends Routes

public void config()
{
	<strong> List controllerClasses = ClassSearcher.of(Controller.class).includeAllJarsInLib(this.includeAllJarsInLib).injars(this.includeJars).search();</strong>

	ControllerBind controllerBind = null;
	for (Class controller : controllerClasses)
				controllerBind = (ControllerBind)controller.getAnnotation(ControllerBind.class);
				。。。
						<strong>add(controllerKey(controller), controller);</strong>

还有些其他的方法可以添加一些包、排除某些类或者包


配置好路由之后,JFinal就知道所有的controllerKey和Controller之间的映射关系。
 

 



 

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐