WebApplicationInitializer에서 웹 응용 프로그램을 초기화하는 동안 자원 번들을 읽을 수 있습니까? WebApplicationInitializer에서 초기화 된 필터가 있고 파일에서 init-params를 읽으려고합니다.WebApplicationInitializer에서 ResourceBundle 읽기
나는이 방법을 시도하지만 setInitParameter("unprotectedUrls", unprotectedUrls);
public class MyWebAppInitializer implements WebApplicationInitializer {
@Value("unprotectedUrls") String unprotectedUrls;
@Override
public void onStartup(ServletContext container) throws ServletException {
System.out.println("Initializing My Web App...");
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(MyWebAppContext.class);
container.addListener(new ContextLoaderListener(rootContext));
javax.servlet.ServletRegistration.Dynamic servlet = container.addServlet("MyServlet", new DispatcherServlet(rootContext));
servlet.addMapping("/");
servlet.setLoadOnStartup(1);
javax.servlet.FilterRegistration.Dynamic charEncodingFilterReg = container.addFilter("CharacterEncodingFilter", CharacterEncodingFilter.class);
charEncodingFilterReg.setAsyncSupported(true);
charEncodingFilterReg.setInitParameter("encoding", StandardCharsets.UTF_8.toString());
charEncodingFilterReg.setInitParameter("forceEncoding", "true");
charEncodingFilterReg.addMappingForUrlPatterns(null, false, "/*");
javax.servlet.FilterRegistration.Dynamic authenticationFilterReg = container.addFilter("AuthenticationFilter", AuthenticationFilter.class);
authenticationFilterReg.setAsyncSupported(true);
container.setInitParameter("unprotectedUrls", unprotectedUrls);
System.out.println("unprotectedUrls: " + unprotectedUrls);
System.out.println("Initializing completed...");
}
}
스프링 재료로 할 수있는 방법이 있습니까? @PropertySource ("xxx.properties")와 비슷합니까? –
@ user233552 일부 bean의 일부 필드에'@ Value' 주석을 넣을 수는 있지만 그것을 검색하여'setInitParameter()'메소드에 값을 복사해야합니다. –
위의 코드에서 알 수 있듯이 @Value 주석이 달린 필드가 null이므로, null 값을 사용하여 setInitParameter (..)를 호출합니다. –