2017-10-09 7 views
0

私はSpring3からSpring4への作業プロジェクトを移行していますが、pom.xmlを変更しただけで、アプリケーションは実行時に私のマッパーの豆を見つけることができません。奇妙なことは、すべての統合と単体テストがまだ機能していることです。 (と私はそこに私のマッパーをテストする)Spring3からSpring4への移行、DtoMapperタイプの適格なBeanが依存関係で見つかりません

@Component("languagesDtoMapper")@Qualifier("languagesDtoMapper")の複数の可能な組み合わせをチェックしました。 私は私の春の構成で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) 

構造コントローラ内:

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

クラスは:

@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"/> 

すべてのアイデアは歓迎されている

+0

コードを適切にフォーマットするには、複数行のコードブロックを使用してください。 – Clijsters

+0

コンポーネントスキャンにXML設定またはJava/Annotation設定を使用していますか?あなたもそれを添付してくださいできますか? – araknoid

答えて

1

3日間の検索後に問題を発見します!

Spring 3はClassNameにBeanをオートワイヤします。 Spring 4はfull.package.name.ClassNameでこれを行います。私は

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

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

、私のマッパーでの呼び出したコントローラで

はこのだった:a.b.c.Languagesはインタフェース、およびunfortnuately実装した

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

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

x.y.z.Languagesが同じと呼ばれています。問題を見つけるのを非常に困難にする。

関連する問題