2015-03-24 4 views
2

Я стараюсь следовать инструкциям и настраивать фильтр prerender для Spring Boot, но поскольку в Boot не существует web.xml, мне нужно сделать это с помощью Java-конфигураций.Настроить фильтр в Java

Инструкции для Весенних приложений с web.xml, что я пытаюсь следовать:

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: добавить зависимость от вашего проекта П:

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

То, что я сделал до сих пор:

Я добавил зависимость от pom. Я создал класс WebConfig и экземпляр Бина:

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

Но я не знаю, как настроить его. prerenderFilter имеет метод init(FilterConfig filterConfig). Но я не уверен, как его использовать.

Как настроить этот фильтр prerenderFilter?

+1

http://docs.spring.io/autorepo/docs/spring-boot/current/api/org/springframework/boot/context/embedded/FilterRegistrationBean.html проверить это –

ответ

3

В вашем 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, "/*"); 
0

Я хочу внести свой вклад версию Spring загрузки для решения Aamirs.

@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); 
    } 

} 
+0

Это не очень идиоматических (и Я не уверен, что это даже работает). У него также есть некоторые запутывающие и нерелевантные ссылки на материал JPA, который не был в исходном вопросе. –

Смежные вопросы