spring-boot
uygulamasına sahibim.Yay uygulamasında servlet filtrelerinde fasülyeyi nasıl fileye almak için?
Projemde ApplicationContext.xml
veya web.xml
dosya yok. Onlardan kaçınmayı ve Java kodunda yapılandırılmış herşeyi yapmayı tercih ederim.
Servlet filtrelerinde fasülye enjeksiyonu ile ilgili aşağıdaki yazıları okudum.
- bunları okuduktan sonra
DelegatingFilterProxy
kullanmaya başladı.Sorum, Bean'i
autowire
çekirdeğidir ve özellikle DelegatingFilterProxy yapılandırması içinxml
dosyalarını kullanmaktan kaçınır.snipped kod 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>
ben uygulanacak filtrelerin bir dizi varsa, nasıl emir belirtilir? –
'FilterRegistrationBean # setOrder (int)', Cevabı güncelledim. – mzc
Teşekkürler, şimdi bunu test edeceğim –