Spring boot:创建名为“methodValidationPostProcessor”的 bean 时出错

2023-12-23

我有一个 Spring Boot 应用程序,正在创建 war 文件并部署在 Tomcat 8 上。该代码在 Eclipse Oxygen 中运行时运行良好,在 Tomcat8 上运行应用程序时遇到异常。

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 1; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.validation.Validator' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:223)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:702)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:527)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5311)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 10 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.validation.Validator' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    ... 32 more

下面是我的 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>com.aditya</groupId>
    <artifactId>MyApp</artifactId>
    <version>Final</version>

<packaging>war</packaging>

<name>MyApp</name>
<description>MyApp</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.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>

<repositories>
    <repository>
        <id>oracle-repo</id>
        <name>oracle repo</name>
        <url>http://download.oracle.com/maven</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
            </exclusion>
        </exclusions> -->
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.4.0</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.4.0</version>
    </dependency> -->

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>


    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.5</version><!--$NO-MVN-MAN-VER$ -->
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.5</version><!--$NO-MVN-MAN-VER$ -->
    </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-jdbc</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-jdbc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>1.16</version>
    </dependency>

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.5</version>
    </dependency>

    <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency> -->

    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.2</version>
    </dependency>

    <dependency>
        <groupId>pushpayment</groupId>
        <artifactId>en</artifactId>
        <version>2.0.2</version>
    </dependency>

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>2.6.0</version><!--$NO-MVN-MAN-VER$ -->
    </dependency>

    <dependency>
        <groupId>net.sf.jt400</groupId>
        <artifactId>jt400</artifactId>
        <version>6.6</version>
    </dependency>

    <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-hal-browser</artifactId>
    </dependency> -->

    <dependency>
        <groupId>net.jodah</groupId>
        <artifactId>expiringmap</artifactId>
        <version>0.5.8</version>
    </dependency>

</dependencies>

<build>
    <finalName>MyApp</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <executions>
                <execution>
                    <id>install-external</id>
                    <phase>build</phase>
                    <configuration>
                        <file>C:/Users/adekbote/.m2/repository/pushpayment/en/2.0.2/en-2.0.2.jar</file>
                        <repositoryLayout>default</repositoryLayout>
                        <groupId>pushpayment</groupId>
                        <artifactId>en</artifactId>
                        <version>2.0.2</version>
                        <packaging>jar</packaging>
                        <generatePom>true</generatePom>
                    </configuration>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

下面是我的 MyApp.java

@ComponentScan("com.ad.*")
@SpringBootApplication
public class MyApp extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(MyApp.class);
}

public static void main(String[] args) throws Exception {
    SpringApplication.run(MyApp.class, args);
}
}

下面是我的 Config.java

@Configuration
@EnableSwagger2
public class Config {

    private LoggerUtil log = LoggerUtil.getInstance();

    private static final String CLASSNAME = "Config";

    @Bean(name = "validator")
    @Qualifier("validator")
    public Validator validator() {
        log.doLog(2, CLASSNAME, "validator", "inside validator = ");
        ValidatorFactory validatorFactory = Validation
                .buildDefaultValidatorFactory();
        Validator validator = validatorFactory.getValidator();
        return validator;
    }
}

下面是我的 AuthorizationServiceImpl.java

@Service
public class AuthorizationServiceImpl implements AuthorizationService {

    @Autowired
    @Qualifier("validator")
    private Validator validator;

    @Autowired
    @Qualifier("requestValidatorClass")
    private Map<String, String> requestValidatorClass;

    private LoggerUtil log = LoggerUtil.getInstance();

    private static final String CLASSNAME = "AuthorizationServiceImpl";

    @Override
    public ResponseBean validate(Object request, String type) throws Throwable {
        ResponseBean responseBean = new ResponseBean();
        final String methodName = "validate";
        String className = null;


        try {
            className = requestValidatorClass.get((type));
            log.doLog(2, CLASSNAME, methodName, "className = " + className);

            if(className != null){
                Class<?> cls = Class.forName(className);
                RequestValidator requestValidator = (RequestValidator) cls.newInstance();
                responseBean = requestValidator.validate(request, validator);
            }else{
                responseBean.setResponseCode(QRConstants.INVALID_FUNCTION);
                responseBean.setResponseMsg(Utils.getRespDesc(QRConstants.INVALID_FUNCTION));
            }
        } catch (Exception e) {
            log.doLog(3, CLASSNAME, methodName, LoggerUtil.getExStackTrace(e));
            responseBean.setResponseCode(QRConstants.TECHNICAL_ERROR_CODE);
            responseBean.setResponseMsg(Utils.getRespDesc(QRConstants.TECHNICAL_ERROR_CODE));
        }

        return responseBean;
    }

}

谁能告诉我为什么我在运行 Tomcat 时遇到此错误。


spring-boot-starter-web 添加了对 hibernate-validator 的依赖,因此 spring 希望配置一个 validator 依赖。

删除该依赖性,添加排除。我看到你评论了排除:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
            </exclusion>
        </exclusions>
</dependency>

或者,如果您想使用此依赖项,请升级到最新版本:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.13.Final</version>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring boot:创建名为“methodValidationPostProcessor”的 bean 时出错 的相关文章

  • jdbc-initialize-database 找不到脚本文件 - DataAccessResourceFailureException

    我无法让我的 Spring Web 应用程序找到我的脚本 我已经配置了 jdbc 命名空间 我已经写好了脚本 但是 我不明白为什么无论我把脚本放在哪里 都找不到它们 我特别将文件夹标记为 类文件夹 我把它们和我所有的罐子放在同一个文件夹里
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • 无法加载 jar 文件的主类

    我使用 Eclipse IDE 开发了一个应用程序 创建应用程序后 我以 jar 格式导出项目 当我尝试运行此 jar 文件时 出现错误 无法加载主类 请帮忙 当您将项目导出为 jar 时 请参阅此所以问题 https stackoverf
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • ActiveRecord 布尔验证接受非布尔值

    我正在尝试验证属性是否为布尔值 即 true 或 false 从我期望的 Rails 指南中 validates new out of stock inclusion in true false 可以工作 但它接受非布尔值 例如 Hi 作为
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐

  • 如何在测试查找期间将 MavenProject 注入到 mojo 中?

    这是我的测试 maven plugin testing harness 3 3 0 junit 5 6 2 import java io File import org apache maven plugin testing Abstrac
  • 禁止删除 git 中的 master 分支

    我正在尝试设置一个 git hook 来禁止任何人删除master alpha and beta我们存储库的分支 有人能帮忙吗 我从来没有做过 git hook 所以我不想在没有一点帮助的情况下尝试自己开发自己的 git hook 直接用一
  • CloudFormation——可以有嵌套映射吗?

    是否可以在 CloudFormation 中嵌套映射 如下例所示 Mappings Regions us east 1 Environments dev ImageId something Subnet something qa
  • 如何进行 F# 测量以获得加速

    假设单机有8核 在 Haskell 中 您可以使用以下命令进行编译threaded选项 然后在运行时使用 RTS Nx指定要使用的核心数量 例如 myprg args sequential run myprg args RTS N1 par
  • proguard.cfg 文件丢失

    阅读 proguard 上的文档 安卓文档 http developer android com tools help proguard html 我应该有一个 ProGuard cfg 正如它所说 当你创建Android项目时 会在项目根
  • 使用 boto 从 dynamodb 获取唯一哈希键值列表

    我想获取 dynamodb 表的唯一哈希键值列表 我目前知道的唯一方法是扫描整个表 然后迭代扫描 更好的方法是什么 rs list table scan range eq rangevalue for i in rs print i pri
  • 自定义域验证是否在 Azure 订阅之间共享?

    我注意到 在我的 Azure 订阅中的许多应用程序服务 应用程序服务计划和 Azure 区域中 自定义域验证 ID 的值似乎是相同的 我看不到任何关于是否证实这一观察结果的文件 自定义域验证是否在 Azure 订阅之间共享 I m refe
  • 编码 URL 后出现 HTTP 404 错误

    当我使用 HttpUtility UrlEncode 对 Url 进行编码时 我最终收到服务器错误 ASP NET 代码 NavigateUrl 网址 http localhost UITest MM UpdateMember aspx 3
  • 按组计算唯一值

    DATA data frame TRIMESTER c 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 STUDENT c 1 2 3 4 5 6 7 1 2 3 5 9 10 11 3 7 10
  • Mean.io 框架与 socket.io

    如何在 Mean io 堆栈中使用 socket io 首先 Mean io 非常定期地更改其文件夹结构 所以我的问题是配置 socket io 的最佳位置在哪里 还是使用express io更好 其次 我仍然不太确定在哪里寻找告诉mean
  • 如何在 Clojure 中迭代向量的向量?

    我有一条包含 3 个属性的消息 类型 货币和金额 我有一个具有 4 个属性的规则 目的地 消息类型 货币和金额 我想检查我的规则并在消息类型上找到与消息匹配的消息并返回目的地 如果没有匹配则返回 null 我使用向量作为消息和规则中字段的固
  • Django 中的 Apscheduler Job 执行两次

    计划的作业执行两次 差异以纳秒为单位 我有一个任务如下task py def print hello print time gt datetime datetime now print hello def print world print
  • 指定制表符宽度?

    显示空白时是否可以定义制表符宽度 例如在 标记或其他内容内 我找不到任何可以用 CSS 做到这一点的东西 但这似乎是一件很常见的事情 就我而言 选项卡宽度太宽 导致页面上的一些代码片段太宽 如果我能以某种方式缩短选项卡宽度以使其适合没有滚动
  • 在 PHP 中将二进制字节数组转换为图像

    我有一个 Java 网络服务 它返回所请求的文件内容byte 字节数组 形式 有时这些文件是 HTML 文件 有时是图像 文件类型没有限制 我正在寻找一种方法将此数组转换为有效的图像 字符串 我的working for text文件如下 b
  • Google OAuth 令牌验证如何以及为何执行?

    当 Google OAuth 文档指示我在访问令牌 刷新令牌 范围 受众和客户端 ID 之间进行操作时 我感到很困惑验证所有令牌 https developers google com accounts docs OAuth2UserAge
  • Net::SSH::Perl 使用转发的 SSH 密钥

    我正在尝试使用 Net SSH Perl 编写 perl 脚本 目前它非常简单 因为我只想通过 ssh 在目录中执行 ls usr bin perl use Net SSH Perl KEYFILE user ssh id rsa ssh
  • number_format() 导致错误“遇到格式不正确的数值”

    我正在使用 number format 将浮点数四舍五入为仅 2 位小数 问题是我的一些输入一开始的小数位数不超过 2 位 所以代码 number format value 2 如果没有足够的十进制数字 它不会平静地添加 0 而是会在 Ap
  • X 宏破坏 doxygen 调用图

    我有3个文件 test c int table define X val val include test x undef X void level2 void level3 level4 void level3 void level4 t
  • 我认为等待与调用者在同一线程上继续,但似乎并非如此

    我认为关于 async await 的要点之一是 当任务完成时 延续在调用 wait 时在相同的上下文中运行 在我的例子中 该上下文是 UI 线程 例如 Debug WriteLine 2 Thread ID Thread CurrentT
  • Spring boot:创建名为“methodValidationPostProcessor”的 bean 时出错

    我有一个 Spring Boot 应用程序 正在创建 war 文件并部署在 Tomcat 8 上 该代码在 Eclipse Oxygen 中运行时运行良好 在 Tomcat8 上运行应用程序时遇到异常 Caused by org sprin