java - Spring 3 到 Spring 4 迁移,未找到依赖关系的 Dto Mapper 类型的合格 bean

标签 java spring migration javabeans spring-4

我正在将一个工作项目从 Spring3 迁移到 Spring4,我只更改了 pom.xml ,现在(在部署时)应用程序在运行时找不到我的映射器的任何 bean。奇怪的是,我所有的集成和单元测试仍然有效。 (我在那里测试我的映射器)

我已经检查了 @Component("languagesDtoMapper")@Qualifier("languagesDtoMapper") 的多种可能组合。 我尝试在我的 spring 配置中声明该 bean

<bean id="languagesDtoMapper" class="com.project.mapper.LanguagesDtoMapper"/>

但无论我做什么,我都会不断收到以下错误消息:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.project.infrastructure.dtomapper.DtoMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=languagesDtoMapper)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)

项目结构:

在 Controller 中:

 @Autowired
 @Qualifier("languagesDtoMapper")
 private DtoMapper<Languages, LanguagesTableDto> partnerLanguageDtoMapper;

类(class):

@Component("languagesDtoMapper")
public class LanguagesDtoMapper extends AbstractDtoMapper<Languages, LanguagesDto> {

public abstract class AbstractDtoMapper<Source, Target> implements DtoMapper<Source, Target> {

public interface DtoMapper<Source, Target> {

<context:annotation-config />
<context:component-scan base-package="com.project"/>

欢迎任何想法

最佳答案

经过 3 天的搜索后发现了问题!

Spring 3 将 Autowiring ClassName 上的 beans, Spring 4 在 full.package.name.ClassName 上执行此操作。

在我调用的 Controller 中

 import a.b.c.Languages;
 import a.b.c.LanguagesTableDto;

 @Autowired
 @Qualifier("languagesDtoMapper")
 private DtoMapper<Languages, LanguagesTableDto> partnerLanguageDtoMapper;

在我的映射器中是这样的:

 import x.y.z.Languages;
 import x.y.z.LanguagesTableDto;

 @Component("languagesDtoMapper")
 public class LanguagesDtoMapper extends AbstractDtoMapper<Languages, LanguagesDto> {

a.b.c.Languages 是一个接口(interface),不幸的是,x.y.z.Languages 的实现被称为相同的。使得查找问题变得非常困难。

关于java - Spring 3 到 Spring 4 迁移,未找到依赖关系的 Dto Mapper 类型的合格 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46644125/

相关文章:

java - 用 JUnit 比较两个对象显示奇怪的行为

javascript - 如何在 Java 或 JS 中检查本地化日期时间是否有效

java - 是否可以在 Spring-Boot Web 应用程序中使用 Java 的 Socket API?

java - 如何为 spring 应用程序设置 Multi-Tenancy 环境?

entity-framework - Entity Framework 迁移 - 生成当前数据库模型的 sql 脚本

typescript - Nx-NestJS-TypeOrm : SyntaxError: Unexpected token {

java - Eclipse WTP、maven 和 m2eclipse - 不复制提供的 jar

spring - 从Spring 3.0.3.RELEASE升级会导致: java. lang.NoSuchFieldError:USER_DECLARED_METHODS

java - 迁移AndroidX运行报错android.support.annotation does not exist

java - 在 super 构造函数中传递需要 `this` 的对象?