Причина этого исключения проста - Spring Security ищет компонент с именем loggingFilter и не может его найти. Этот компонент требуется для основного фильтра безопасности Spring - DelegatingFilterProxy - определенного в web.xml
DelegatingFilterProxy - это класс в веб-модуле Spring. Он предоставляет функции для того, чтобы HTTP-вызовы проходили через фильтры до достижения фактического места назначения. С помощью DelegatingFilterProxy класс, реализующий интерфейс javax.Servlet.Filter, может быть подключен к цепочке фильтров.
DelegatingFilterProxy также использует вызывая специфицированные c или несколько фильтров в соответствии с путями URI запроса, предоставляя конфигурацию в контексте приложения Spring или в сети. xml.
Следовательно, у вас должен быть собственный класс фильтра и конфигурация, связанная с этим классом. Проверьте это, потому что есть что-то, чего вы не видели.
@Component("loggingFilter")
public class CustomFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
}
@Override
public void doFilter(
ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
LOGGER.info("Request Info : " + req);
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
Чтобы зарегистрировать пользовательский фильтр, используя Java settings :
public class ApplicationInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected javax.servlet.Filter[] getServletFilters() {
DelegatingFilterProxy delegateFilterProxy = new DelegatingFilterProxy();
delegateFilterProxy.setTargetBeanName("loggingFilter");
return new Filter[]{delegateFilterProxy};
}
}
Пользовательский фильтр, используя конфигурация в веб. xml
<filter>
<filter-name>loggingFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>loggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CustomFilter реализует javax.Servlet.Filter. Этот класс имеет аннотацию @Component для регистрации в качестве bean-компонента Spring в контексте приложения. Таким образом, класс DelegatingFilterProxy может найти наш класс фильтра при инициализации цепочки фильтров.
Обратите внимание, что имя bean-компонента Spring должно совпадать со значением в имени фильтра, указанном при регистрации пользовательского элемента. фильтруйте в классе ApplicationInitializer или в Интернете. xml позже, потому что класс DelegatingFilterProxy будет искать компонент фильтра с точно таким же именем в контексте приложения.
Если он не может найти компонент с этим именем, это вызовет исключение при запуске приложения.
Вы можете найти более подробную информацию здесь .
Также вы можете проверить, является ли проблема несовместимости между версией Spring и java, которую вы используете.
Я надеюсь, что это может помочь вам и, в конце концов, найти решение.