programing

스프링 부트에서의 context-param 설정 방법

goodjava 2023. 4. 5. 21:47

스프링 부트에서의 context-param 설정 방법

기존의 web.xml 타입 설정에서는 다음과 같이 컨텍스트파라미터를 설정할 수 있습니다.

web.xml

...
<context-param>
  <param-name>p-name</param-name>
  <param-value>-value</param-value>
</context-param>
...

스프링 부트에서 이 작업은 어떻게 수행됩니까?매개 변수가 필요한 필터가 있습니다.

사용하고 있다@EnableAutoConfiguration를 포함하다<artifactId>spring-boot-starter-jetty</artifactId>내 폼에.

파라미터를 설정하려면server.servlet.context-parameters응용 프로그램 속성.예를 들어 다음과 같습니다.

server.servlet.context-parameters.p-name=p-value

더 이상 지원되지 않는 Spring Boot 1.x에서는 이 속성의 이름이 지정되었습니다.server.context-parameters:

servlet.context-parameters=p-name=p-value

또는 파라미터를 프로그래밍 방식으로 설정할 수 있습니다.ServletContextInitializer콩:

@Bean
public ServletContextInitializer initializer() {
    return new ServletContextInitializer() {

        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.setInitParameter("p-name", "-value");
        }
    };
}

Java Configuration을 사용하면 실제로 이 작업을 수행할 수 있습니다.파라미터가 필요한 필터가 있는 경우 application.yml(또는 .properties)에 삽입하기만 하면 됩니다.@Value에 등록합니다.FilterRegistrationBean.

예를 들어 다음과 같습니다.

@Value("${myFilterParam}")
private String myFilterParam;

@Bean(name="myFilter")
public FilterRegistrationBean myFilter() {
    FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
    filterRegistrationBean.setInitParameters(Collections.singletonMap("p-name", "p-value"));
    return filterRegistrationBean;
}

JavaDoc도 지원FilterRegistrationBean:

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/embedded/FilterRegistrationBean.html

갱신하다

에서 서블릿 컨텍스트의 파라미터를 등록할 수 있습니다.SpringBootServletInitializer#onStartup()방법.응용 프로그램클래스는SpringBootServletInitializer이 명령어를 덮어쓸 수 있습니다.onStartupmethod 및 파라미터를 설정합니다.예:

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.setInitParameter("p-name", "p-value");
        super.onStartup(servletContext);
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

}

다른 대안은 다음을 정의하는 것입니다.ServletContextInitializer앤디 윌킨슨이 제안한 콩.

Spring Boot 2.0.0 이후 컨텍스트파라미터 추가 방법이 갱신되었습니다.

server.servlet.context-parameters.yourProperty.

링크에서 더 많은 업데이트를 볼 수 있습니다.

또한 Configuration에 Init Parameter Configuring Servlet Context Initializer를 정의할 수도 있습니다.예:

@Bean
public InitParameterConfiguringServletContextInitializer initParamsInitializer() {
    Map<String, String> contextParams = new HashMap<>();
    contextParams.put("p-name", "-value");
    return new InitParameterConfiguringServletContextInitializer(contextParams);
}

언급URL : https://stackoverflow.com/questions/26639475/how-to-set-context-param-in-spring-boot