Я пытаюсь использовать существующий XML-файл безопасности Spring при загрузке Spring. я добавил @ImportResource, чтобы загрузить мою существующую конфигурацию xml. на консоли отображается загрузка spring -security.xml.
Я получаю сообщение об ошибке ниже:
"Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.security.servlet.SpringBootWebSecurityConfiguration$DefaultConfigurerAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.config.annotation.ObjectPostProcessor<?>' available"
***************************
APPLICATION FAILED TO START
***************************
Description:
A component required a bean of type 'org.springframework.security.config.annotation.ObjectPostProcessor' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.security.config.annotation.ObjectPostProcessor' in your
OnlineshoppingApplication.java
package net.kzn.onlineshopping;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;
@SpringBootApplication
@ComponentScan(basePackages = {"net.kzn.onlineshopping","net.kzn.shoppingbackend"})
@ImportResource({"classpath:spring-security.xml","classpath:dispatcher-servlet.xml"})
public class OnlineshoppingApplication {
public static void main(String[] args) {
SpringApplication.run(OnlineshoppingApplication.class, args);
}
}
Spring-security.xml
<beans:beans
xmlns = "http://www.springframework.org/schema/security"
xmlns:beans = "http://www.springframework.org/schema/beans"
xmlns:context = "http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<context:component-scan
base-package = "net.kzn.shoppingbackend" />
<beans:bean id = "passwordEncoder"
class = "org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<http pattern = "/resources/**" security = "none"/>
<http>
<!-- only admin access -->
<intercept-url pattern = "/manage/**" access = "hasAuthority('ADMIN')" />
<!-- only user access (who is registered) -->
<intercept-url pattern = "/cart/**" access = "hasAuthority('USER')" />
<!-- rest of the world -->
<intercept-url pattern = "/**" access = "permitAll" />
<form-login login-page = "/login"/>
<access-denied-handler error-page = "/access-denied"/>
</http>
<authentication-manager>
<authentication-provider>
<password-encoder ref = "passwordEncoder"/>
<jdbc-user-service data-source-ref = "dataSource"
users-by-username-query = "select email, password, enabled from user_detail where email = ?"
authorities-by-username-query = "select email, role from user_detail where email = ?" />
</authentication-provider>
</authentication-manager>
</beans:beans>
мой файл pom.xml
pom.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.kzn</groupId>
<artifactId>shoppingbackend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>shoppingbackend</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-hal-browser</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.webflow/spring-webflow -->
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-webflow</artifactId>
<version>2.5.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Как я могу решить эту проблему?
Я добавил файл pom.xml.
Я добавил ответ, пожалуйста, реализуйте и проверьте. Сначала используйте аннотацию enablewebsecurity и запустите приложение, если проблема все еще не решена, попробуйте добавить EnableAutoConfiguration и исключить несколько классов.




Я бы посоветовал вам поделиться файлом pom.xml, а также попытаться использовать приведенную ниже аннотацию с приложением springboot, так как чего-то не хватает.
в зависимости от вашей настройки, если вы получите какую-либо ошибку запуска, связанную с автоконфигурацией загрузки, вам, возможно, придется исключить некоторые классы автоконфигурации, например поместив это в свой класс приложения:
@EnableAutoConfiguration(exclude = [SecurityFilterAutoConfiguration, SpringBootWebSecurityConfiguration])
также добавьте аннотацию @EnableWebSecurity с помощью spring -boot.
я добавил @EnableWebSecurity и @EnableAutoConfiguration (exclude = {SecurityFilterAutoConfiguration.class}), и у меня это работает
но все же мое веб-приложение не загружается
с какими ошибками вы столкнулись после выполнения вышеуказанного кода? и если мой пост поможет вам решить вашу текущую проблему, пожалуйста, проголосуйте?
На консоли сейчас нет ошибок, но мой веб-сайт не загружается в браузере.
это правильный способ загрузить сервлет диспетчера? @ImportResource ({"classpath: spring-security.xml", "classpath: dispatcher-servlet.x ml"})
Да, мы можем его загрузить.
в вашем классе контроллера отдыха реализуйте ErrorController @Override public String getErrorPath () {return "/ error"; }
не могли бы вы поделиться своим файлом pom.xml?