【问题标题】:Is there a way how to run madvoc inside of spring boot?有没有办法在弹簧靴内运行 madvoc?
【发布时间】:2016-03-10 19:01:18
【问题描述】:

有没有办法在 Spring Boot 中运行 Madvoc web 微框架?

Spring Boot 允许集成其他技术(我们试验了在 Spring Boot 下运行的 Apache Wicket)。

JODD madvoc 可以这样做吗?有合适的配置示例吗?

编辑 #1 我尝试为 Madvoc 添加 Spring Boot servlet 过滤器配置,但看不到像这样的 Madvoc init 输出:

INFO jodd.madvoc.Madvoc - Madvoc starting... 
INFO jodd.madvoc.Madvoc - Default Madvoc web application created.

这就是我的初始化代码的样子...

@Configuration
public class MadvocInitializer implements ServletContextInitializer {

    @Override
    public void onStartup(ServletContext sc) throws ServletException {
        FilterRegistration filter = sc.addFilter("madvoc", MadvocServletFilter.class);
        filter.setInitParameter("madvoc.webapp","app.web.jodd.AppWebApplication");

        EnumSet NON_ASYNC_DISPATCHER_TYPES =
                EnumSet.of(DispatcherType.FORWARD, DispatcherType.INCLUDE,DispatcherType.REQUEST);

        filter.addMappingForUrlPatterns(NON_ASYNC_DISPATCHER_TYPES, true, "/jodd/*");

        System.out.println("+++ MADVOC FILTER");
    }
}

编辑 #2 过滤器配置引用“AppWebApplication”,如下所示。我可以看到来自“registerMadvocComponents”代码的打印消息,所以肯定有东西在运行。

public class AppWebApplication extends WebApplication {

    @Override
    public void registerMadvocComponents() {
        super.registerMadvocComponents();

        System.out.println("+++ MADVOC FILTER - configuration");

        registerComponent(MadvocConfig.class);
       // registerComponent(MyRewriter.class);
    }

}

【问题讨论】:

  • 你能验证onStartup是否被调用?
  • 是的,它被调用了,我可以在控制台上看到打印消息“+++ MADVOC FILTER”。
  • 酷,那我可以不用 SpringBoot 试试,因为它的 servlets3 :)
  • 有关更多详细信息,请参阅上面我最新的帖子编辑...
  • Spring Bean 注入更棒了!!

标签: spring-boot jodd


【解决方案1】:

好的,简而言之,我们有 Servlets 3.x 注册 Madvoc 过滤器的方式,它将注册所有内容。

请检查 Servlets 3 here 的工作示例。

您的代码看起来不错,但您可以检查以下内容:

  1. 也许 Springboot 只是对 Jodd 隐藏了日志,而您并没有看到它在工作。

  2. 如果您过滤到/jodd/* 可能会出现问题:) 默认情况下,操作将映射到例如/index.html 而不是 /jodd/index.html。因此,您将无法运行操作。要对此进行测试,请将过滤器映射到根 (/*) 并查看您现在是否可以执行您的 Madvoc 操作 :)

要将 Spring 注入到 Madvoc 操作中 - 检查类 PetiteMadvocController。这个在 madvoc 中注入了Petite bean(是的,无论如何谁需要 Spring:)。基本上,您只需要在 Springs 应用程序上下文中创建操作类。

【讨论】:

  • 设置 LoggerFactory.setLoggerFactory(new SimpleLoggerFactory(Logger.Level.DEBUG));成功了,我可以在 SpringBoot 启动期间看到日志信息。伟大的。似乎它是 /jodd/* 问题我修复了这个,仍然有一些 isee,但回来更新。关于 Spring bean .. 原因很简单,我们已经在应用程序中使用了一些 ...
  • 很高兴它起作用了 ;) 当然,没问题,继续摇晃 ;)
猜你喜欢
  • 2018-02-16
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2018-02-14
  • 2016-02-16
  • 2017-12-22
  • 2018-02-19
  • 1970-01-01
相关资源
最近更新 更多