【问题标题】:Configure a filter in Java在 Java 中配置过滤器
【发布时间】:2015-05-27 11:47:34
【问题描述】:

我正在尝试按照说明为 Spring Boot 配置预渲染过滤器,但由于 Boot 中没有 web.xml,我需要使用 Java 配置来执行此操作。

我正在尝试遵循的带有 web.xml 的 Spring 应用程序的说明:

1:将此行添加到您的 web.xml:

<filter>
      <filter-name>prerender</filter-name>
      <filter-class>com.github.greengerong.PreRenderSEOFilter</filter-class>
      <init-param>
          <param-name>prerenderToken</param-name>
          <param-value>[get from prerender: https://prerender.io/]</param-value>
      </init-param>
  </filter>
  <filter-mapping>
      <filter-name>prerender</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

2:添加对你项目 pom 的依赖:

<dependency>
  <groupId>com.github.greengerong</groupId>
  <artifactId>prerender-java</artifactId>
  <version>1.6.4-SNAPSHOT</version>
</dependency>

到目前为止我做了什么:

我在 pom.xml 中添加了依赖项。我创建了一个 WebConfig 类并实例化了 Bean:

@Configuration
public class WebConfig {
    @Bean
    public PreRenderSEOFilter PreRenderSEOFilter() {
        PreRenderSEOFilter prerenderFilter = new PreRenderSEOFilter();
        return prerenderFilter;
    }
}

但我不知道如何配置它。 prerenderFilter 有一个方法 init(FilterConfig filterConfig)。但是不知道怎么用。

如何配置这个 prerenderFilter?

【问题讨论】:

标签: java spring configuration spring-boot prerender


【解决方案1】:

在您的 WebApplicationInitializer 中,您可以使用以下代码:

    com.github.greengerong.PreRenderSEOFilter seoFilter = new com.github.greengerong.PreRenderSEOFilter();
    FilterRegistration.Dynamic filter =  container.addFilter("prerender", seoFilter);
    filter.setInitParameter("prerenderToken", "<YOU TOKEN>");
    filter.addMappingForUrlPatterns(null , true, "/*");

【讨论】:

    【解决方案2】:

    我想为 Aamirs 解决方案贡献 Spring Boot 版本。

    @Configuration //instead of @SpringBootApplication 
    @EnableAutoConfiguration //instead of @SpringBootApplication
    @PropertySource(value = { "classpath:application.properties" })
    @EntityScan("de.dpt.persistence")
    @ComponentScan("de.dpt")
    @EnableJpaRepositories("de.dpt.persistence")
    public class Application extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    
        @Override
        public void onStartup(ServletContext context) throws ServletException {
    
            PreRenderSEOFilter seoFilter = new PreRenderSEOFilter();
            FilterRegistration.Dynamic filter =  context.addFilter("prerender", seoFilter);
            filter.setInitParameter("prerenderToken", "<your token>");
            filter.addMappingForUrlPatterns(null , true, "/*");
    
            super.onStartup(context);
        }
    
    }
    

    【讨论】:

    • 这不是很地道(而且我不确定它是否有效)。它还对原始问题中没有的 JPA 内容进行了一些令人困惑且不相关的引用。
    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2012-07-28
    • 2015-12-13
    • 2015-09-11
    相关资源
    最近更新 更多