참고 : 나는이 질문이 매우 에서 this one 인 100 %를 이해합니다. 제 질문은 과 비슷합니다. (스프링 부트 응용 프로그램 내에서 필터 경로/URL을 구성하고 싶습니다.) 그러나이 질문에 대한 대답은 제가 설정 한 것과는 약간 다르지만 중요한 구성을 추측합니다. 그래서스프링 부트 구성 클래스의 컴포넌트 인스턴스 참조하기
나는 위대한 작품을 작업 필터가 있습니다
// Groovy pseudo-code
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
@Slf4j
class DataModeFilter implements Filter {
@Autowired
List<EndpointConfig> endpointConfigs
@Autowired
MyAppProperties myAppProperties
@Override
void init(FilterConfig filterConfig) throws ServletException {
log.trace("Initializing the ${this.class.name} filter...")
}
@Override
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
log.trace("Do some stuff")
}
@Override
void destroy() {
log.trace("Destroying the ${this.class.name} filter...")
}
}
가 나는 또한 (프로그램 DI 용) @Configuration
클래스가를하지만 내부 @Bean
-annotated 방법을 쓸 필요가 없습니다 DataModeFilter
의 경우 DataModeFilter
이 @Component
(스프링 DI가 자동으로 처리합니다.)이기 때문에
이제 v1/data
경로에 노출 된 끝점에만 내 DataModeFilter
을 적용하고 싶습니다. 다른 문제의 accepted answer에 따르면, 나는 내 @Configuration
(DI) 클래스에 다음을 추가해야합니다
@Configuration
class MyAppConfigurator {
// Lots of other @Beans declared up here
@Bean
FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registration = new FilterRegistrationBean()
registration.setFilter(dataModeFilter())
registration.addUrlPatterns("/v1/data/*")
registration.addInitParameter("paramName", "paramValue")
registration.setName("dataModeFilter")
registration.setOrder(1)
registration
}
@Bean(name = "dataModeFilter")
Filter dataModeFilter() {
// How to refer to my @Component-annotated DataModeFilter instance?!?
}
}
는하지만, 내 DataModeFilter
해당 클래스에서 @Bean
가 아닌, 그래서 어떻게 내가 그것을 참조 할 내 FilterRegistrationBean
?
감사 @Abhijit (+1) - MyAppConfigurator''를 제외하고는 @ Configuration' ...'에 의해 주석이 할 수있는 I 아직도의''DataModeFilter와 Autowire' 그것은 @ '인스턴스? – smeeb
방금 할 수 있다고 말하지 않았습니까? –
아니요 :-) 위 코드 예에서'MyAppConfigurator'에'@Configurator'를 주석으로 추가하지 않았습니다 ... 그래서'@Configuration'을 추가하여 Spring을 망칠 지 궁금합니다 ... 확인해 주시겠습니까? (필요하다면 코드 예제를 업데이트하십시오!) 어느쪽으로 든? 다시 한 번 감사드립니다! – smeeb