Skip to content

Commit

Permalink
⚡ 调整 AbstractAccessLogFilter 的注册方式,方便用户关闭默认注册行为
Browse files Browse the repository at this point in the history
link gh-237
  • Loading branch information
Hccake committed Jun 27, 2023
1 parent 3bc65cc commit 847f816
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
import lombok.extern.slf4j.Slf4j;
import org.ballcat.web.accesslog.AbstractAccessLogFilter;
import org.ballcat.web.accesslog.DefaultAccessLogFilter;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.*;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;

/**
Expand All @@ -38,18 +38,12 @@ public class AccessLogAutoConfiguration {
private final AccessLogProperties accessLogProperties;

@Bean
public FilterRegistrationBean<AbstractAccessLogFilter> accessLogFilterRegistrationBean(
ObjectProvider<AbstractAccessLogFilter> logFilterObjectProvider) {
log.info("=== Access log 记录拦截器已开启 ====");
AbstractAccessLogFilter accessLogFilter = logFilterObjectProvider.getIfAvailable();
if (accessLogFilter == null) {
accessLogFilter = new DefaultAccessLogFilter(accessLogProperties.getSettings());
accessLogFilter.setMaxBodyLength(accessLogProperties.getMaxBodyLength());
}
FilterRegistrationBean<AbstractAccessLogFilter> registrationBean = new FilterRegistrationBean<>(
accessLogFilter);
registrationBean.setOrder(accessLogProperties.getFilterOrder());
return registrationBean;
@ConditionalOnMissingBean(AbstractAccessLogFilter.class)
public AbstractAccessLogFilter defaultAccessLogFilter() {
AbstractAccessLogFilter accessLogFilter = new DefaultAccessLogFilter(accessLogProperties.getSettings());
accessLogFilter.setMaxBodyLength(accessLogProperties.getMaxBodyLength());
accessLogFilter.setOrder(accessLogProperties.getFilterOrder());
return accessLogFilter;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.ballcat.common.core.constant.MDCConstants;
import org.ballcat.common.core.request.wrapper.RepeatBodyRequestWrapper;
import org.slf4j.MDC;
import org.springframework.core.Ordered;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.web.filter.OncePerRequestFilter;
Expand All @@ -35,12 +36,14 @@
/**
* @author Hccake 2019/10/15 21:53
*/
public abstract class AbstractAccessLogFilter extends OncePerRequestFilter {
public abstract class AbstractAccessLogFilter extends OncePerRequestFilter implements Ordered {

public static final int DEFAULT_MAX_BODY_LENGTH = 256;

private int maxBodyLength = DEFAULT_MAX_BODY_LENGTH;

private int order = 0;

/**
* Same contract as for {@code doFilter}, but guaranteed to be just invoked once per
* request within a single request thread. See {@link #shouldNotFilterAsyncDispatch()}
Expand Down Expand Up @@ -181,6 +184,15 @@ public void setMaxBodyLength(int maxBodyLength) {
this.maxBodyLength = maxBodyLength;
}

public void setOrder(int order) {
this.order = order;
}

@Override
public int getOrder() {
return this.order;
}

protected int getMaxBodyLength() {
return this.maxBodyLength;
}
Expand Down

0 comments on commit 847f816

Please sign in to comment.