gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:09:34 24 4
gpt4 key购买 nike

我正在将一个工作项目从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com