gpt4 book ai didi

spring - Servlet 过滤器作为组件 Spring Boot

转载 作者:行者123 更新时间:2023-12-04 13:47:29 25 4
gpt4 key购买 nike

我想在 Spring Boot Web 应用程序中配置 Servlet 过滤器,并且我想使用 @Value 注释 Autowiring 一些 Bean 和属性。我能够使用以下配置实现这一点:

   @Configuration
public class MyWebConfig{
@Autowire
MyFilter filter;

@Autowire
MyAnotherFilter anotherFilter;

@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(filter);
registration.setOrder(1);
return registration;
}

@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(anotherFilter);
registration.setOrder(2);
return registration;
}

}

我已经配置了两个过滤器(为简洁起见,只显示了一个过滤器):
@Configuration
public class MyFilter implements Filter{

@Value("${my.property.key}")
private String myProperty;

public void doFilter(...){
....
}

//init and destroy stubs
....
}

一切正常。我仍然有几个问题:
1) 即使我注释掉 FilterRegistrationBean 一段代码,它也能工作。如果我想设置某些顺序,我觉得我必须使用 FilterRegistrationBean 。正确的?
2) 有什么方法可以在没有 FilterRegistrationBean 的情况下设置顺序或其他配置,例如 url 模式?
3)我相信我可以使用@Component 来替换Filter 类上的@Configuration 注释并且它会正常工作吗?
4) 最后,将过滤器类本身标记为@Component/@Configuration 是否好?

请注意,我在 Main 应用程序类上使用了 @SpringBootApplication。

最佳答案

1) It works even when I comment out FilterRegistrationBean piece of code. I feel I must use FilterRegistrationBean if I want to set certain order. Correct?



它有效,因为任何 Filter除非您提供了显式注册 bean,否则 bean 会自动注册一些默认配置。

2) Is there any way I can set order or other configuration like url patterns without FilterRegistrationBean?



您可以使用 @Order 设置顺序在您的 Filter或让它实现 Ordered .

如果你想设置 URL 模式,你应该使用注册 bean

3) I believe I can use @Component can replace @Configuration annotation on Filter class and it will work correctly?



正确的。你的过滤器不是配置所以它应该用 @Component 注释而不是 @Configuration

4) And finally Is it good to have Filter class itself marked as @Component/@Configuration?



是的,可以用 @Component 注释过滤器.另一种方法是使用 @Bean @Configuration 上的方法类(class)。

关于spring - Servlet 过滤器作为组件 Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com