मेरे पास spring-boot
एप्लिकेशन है।वसंत आवेदन में सर्वलेट फिल्टर में बीन को स्वचालित करने के लिए कैसे करें?
मेरे पास मेरे प्रोजेक्ट में ApplicationContext.xml
या web.xml
फ़ाइलें नहीं हैं। मैं उनसे बचना पसंद करता हूं और जावा कोड में सब कुछ कॉन्फ़िगर किया गया है।
मैंने सर्वलेट फ़िल्टर में बीन इंजेक्शन के बारे में निम्नलिखित पोस्ट पढ़ी हैं।
उन्हें पढ़ने के बाद, मैं DelegatingFilterProxy
उपयोग करने के लिए शुरू कर दिया।
मेरा प्रश्न है कि autowire
फ़िल्टर में बीन कैसे करें और विशेष रूप से DelegatingFilterProxy कॉन्फ़िगरेशन के लिए xml
फ़ाइलों का उपयोग करने से बचें।
कोड कतरना github.
public class AuditHandler {
public void auditRequest(String appName, ServletRequest request) {
System.out.println(appName + ": Received request from " + request.getRemoteAddr());
}
}
public class AuditFilter implements Filter {
private final AuditHandler auditHandler;
private String appName;
public AuditFilter(AuditHandler auditHandler) {
this.auditHandler = auditHandler;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
auditHandler.auditRequest(appName, request);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
appName = filterConfig.getInitParameter("appName");
}
public void destroy() {}
}
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="auditHandler" class="com.deadcoderising.AuditHandler">
</bean>
<bean id="auditFilter" class="com.deadcoderising.AuditFilter">
<constructor-arg ref="auditHandler"/>
</bean>
</beans>
web.xml
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="true">
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
<filter>
<filter-name>auditFilter</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>appName</param-name>
<param-value>di-example</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>auditFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
यदि मेरे पास लागू होने के लिए कई फ़िल्टर हैं, तो ऑर्डर निर्दिष्ट कैसे किया जाता है? –
'फ़िल्टर पंजीकरण पंजीकरण # सेटऑर्डर (int) ', मैंने जवाब अपडेट किया है। – mzc
धन्यवाद, मैं अब परीक्षण करूँगा –