2014-10-29 14 views
14

में संदर्भ के परम स्थापित करने के लिए क्लासिक 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> शामिल किया है।

+0

application.properties विकल्पों के लिए दस्तावेज़ देखें। उनमें से कई आप केवल एक पंक्ति में हल कर सकते हैं :) http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#appendix। –

उत्तर

33

आप एक ServletContextInitializer सेम की घोषणा के द्वारा पूरे ServletContext पर पैरामीटर सेट कर सकते हैं:

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

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

अद्यतन। अब आप application.properties में एक पंक्ति में ServletContext पर एक पैरामीटर कॉन्फ़िगर कर सकते हैं:

server.context_parameters.p-name=-value 
+0

आपका उत्तर कुछ व्यापक शोध में आया है कि मैं स्प्रिंग बूट का उपयोग करके फ़िल्टर सूची को परिभाषित करने के तरीके के बारे में कर रहा हूं। मैं अपने शोध दस्तावेज कर रहा हूं। क्या आप इस पर टिप्पणी करने के इच्छुक हैं? यहां लिंक है: http://stackoverflow.com/questions/36489253/api-url-has-an-empty-filter-list-in-spring-boot-security – CodeMed

7

आप वास्तव में जावा कॉन्फ़िगरेशन का उपयोग करके इसे प्राप्त कर सकते हैं। यदि आपके पास फ़िल्टर है जिसके लिए कुछ पैरामीटर की आवश्यकता है, तो बस उन्हें अपने 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; 
} 

FilterRegistrationBean के लिए इसके अलावा JavaDoc:

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

अद्यतन

आप SpringBootServletInitializer#onStartup() विधि में सर्वलेट संदर्भ के लिए पैरामीटर रजिस्टर कर सकते हैं। आपकी एप्लिकेशन क्लास SpringBootServletInitializer का विस्तार कर सकती है और आप onStartup विधि को ओवरराइड कर सकते हैं और वहां पैरामीटर सेट कर सकते हैं। उदाहरण:

@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 सेम परिभाषित करने के लिए है। का उपयोग कर एक ServletContextInitializer आवश्यक नहीं रह गया है स्प्रिंग बूट 1.2 में:

+0

क्षमाप्रार्थी, मैं संदर्भ पैराम्स के बारे में पूछने के लिए था, इनट पैराम नहीं। मैंने इसे प्रतिबिंबित करने के लिए प्रश्न अपडेट किया है। –

0

इसके अलावा, आप अपने विन्यास में InitParameterConfiguringServletContextInitializer परिभाषित कर सकते हैं। उदाहरण:

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