如何在Jboot中添加自己的 JFianlConfig

凡是开发过 JFinal 的同学,都知道 JFinalConfig 是 JFinal 的核心配置,详情: https://www.jfinal.com/doc/2-1 ,其内容如下:

  1. public class DemoConfig extends JFinalConfig {
  2. public void configConstant(Constants me) {}
  3. public void configRoute(Routes me) {}
  4. public void configEngine(Engine me) {}
  5. public void configPlugin(Plugins me) {}
  6. public void configInterceptor(Interceptors me) {}
  7. public void configHandler(Handlers me) {}
  8. }

默认情况下,我们不需要对 JFinal 进行任何的配置,因为 Jboot 已经对 JFinal 进行了默认的配置,同时,Controller 等的配置完全是通过注解@RequestMapping 来配置了,数据库也只是在 jboot.properties 里添加就可以。

但是可能在某些特殊情况下,我们对 JFinal 进行自己特殊的配置,如何来做呢?

  • 第一步:编写一个类继承 JbootAppListenerBase
  • 第二步:复写对应的方法

JbootAppListenerBase 提供的方法如下:

  1. public class JbootAppListenerBase implements JbootAppListener {
  2. @Override
  3. public void onInit() {
  4. //会在以下所有方法之前进行优先调用
  5. }
  6. @Override
  7. public void onConstantConfig(Constants constants) {
  8. //对应 JFinalConfig 的 configConstant
  9. }
  10. @Override
  11. public void onRouteConfig(Routes routes) {
  12. //对应 JFinalConfig 的 configRoute
  13. }
  14. @Override
  15. public void onEngineConfig(Engine engine) {
  16. //对应 JFinalConfig 的 configEngine
  17. }
  18. @Override
  19. public void onPluginConfig(JfinalPlugins plugins) {
  20. //对应 JFinalConfig 的 configPlugin
  21. }
  22. @Override
  23. public void onInterceptorConfig(Interceptors interceptors) {
  24. //对应 JFinalConfig 的 configInterceptor
  25. }
  26. @Override
  27. public void onFixedInterceptorConfig(FixedInterceptors fixedInterceptors) {
  28. //FixedInterceptor 类似 Interceptor,
  29. // 但是 FixedInterceptor 不会被注解 @Clear 清除
  30. }
  31. @Override
  32. public void onHandlerConfig(JfinalHandlers handlers) {
  33. //对应 JFinalConfig 的 configHandler
  34. }
  35. @Override
  36. public void onStartBefore() {
  37. // 此方法会在 onStart() 之前调用
  38. }
  39. @Override
  40. public void onStart() {
  41. //对应 JFinalConfig 的 onStart()
  42. }
  43. @Override
  44. public void onStop() {
  45. //对应 JFinalConfig 的 onStop()
  46. }
  47. }

编写的继承 JbootAppListenerBase 的类名可以是任意名称,Jboot 的 ClassScanner 会自动扫描到并在 App 启动的时候自动执行,同时 ,一个应用在可以存在多个继承至 JbootAppListenerBase 的类,这样更加方便团队配合和模块化开发,每个团队(或模块)都可以有自己的配置类,不会造成代码冲突。