diff --git a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java index 32e1b56..38dbe09 100644 --- a/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java +++ b/src/main/java/cn/zhangdeman/filter/RequestInitFilter.java @@ -11,8 +11,13 @@ import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpFilter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; import java.io.IOException; import java.util.Arrays; @@ -24,9 +29,11 @@ import java.util.Map; // 初始化请求 @WebFilter("/*") // 所有接口请求均会触发次过滤器 @Order(Ordered.REQUEST_ID) // 足够小, 保证最先执行 +@Component +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS) public class RequestInitFilter extends HttpFilter { @Autowired - private RuntimeContext runtimeContext; + private ObjectFactory requestScopedBeanFactory; @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -38,7 +45,7 @@ public class RequestInitFilter extends HttpFilter { @Override public void doFilter(HttpServletRequest httpServletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - // RuntimeContext runtimeContext = new RuntimeContext(); + RuntimeContext runtimeContext = requestScopedBeanFactory.getObject(); setBaseInfo(httpServletRequest, runtimeContext); // 设置基础信息 setRequestQuery(runtimeContext.getRequestInfo()); // 设置请求query信息 setRequestBody(runtimeContext.getRequestInfo()); // 设置请求Body