2017-09-29 11 views
0

こんにちは私は春に新しく、私は単純なプロジェクトでSpringベースの注釈を使用しています。私のプロジェクトの外観[com.Car]タイプの一意のBeanは定義されていません:期待される単一のBeanですが見つかりました0:

Engine.java

package com; 

public class Engine { 

    private String engname; 

    public Engine() { 
     // TODO Auto-generated constructor stub 
     System.out.println("Engine Object Created"); 
    } 

    public String getEngname() { 
     return engname; 
    } 

    public void setEngname(String engname) { 
     this.engname = engname; 
    } 

} 

Car.java

package com; 

import org.springframework.beans.factory.annotation.Autowired; 

public class Car { 

    @Autowired 
    private Engine engine; 

    public void printEngineData() { 
     System.out.println("Engine Name"+engine.getEngname()); 
    } 

} 

applicationContext.xmlを

<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:c="http://www.springframework.org/schema/c" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

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

    <bean class="com.Engine"> 
     <property name="engname" value="Audi Engine"></property> 
    </bean> 

</beans> 

と私のテストクラスが Client.java パッケージcomのように見えるです。

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class Client { 
    public static void main(String[] args) { 
     ApplicationContext ap=new ClassPathXmlApplicationContext("applicationContext.xml"); 
     Car c = (Car)ap.getBean(Car.class); 
     c.printEngineData(); 
    } 
} 

私はClient.javaクラスを実行している、それは私に例外 org.springframework.beans.factory.NoSuchBeanDefinitionExceptionをスローし、その後、それはを作成したエンジンクラスコンストラクタとプリントエンジンのオブジェクトを実行します。

私はこのプロジェクトにspring3.2.0を使用しています。

+0

可能な複製https://stackoverflow.com/questions/46487567/no-qualifying-bean-of-type-available – Afridi

+0

okですが、その答えは私のために働いていないのですが、間違っている箇所を確認してください。 –

+0

あなたのXML設定でも同様に 'Car'クラスのbean – Afridi

答えて

0

xml構成とコンポーネントスキャンの2つのファセットが混在しています。 Carクラスをスキャンするには、適切な注釈の1つ、たとえばを使用する必要があります。

@Component 
public class Car { 
.... 
} 

他の方法は、既にコメントで述べたように、XMLファイルにあなたのcar Beanを定義することです。これは任意のCOM内のすべてのクラスをスキャンしますので、その後、あなたは

<context:component-scan base-package="com"/> 

タグを削除する必要があります。*パッケージを@Component(または他の)少なくとも大規模なプロジェクトでは、しばらく時間がかかることがあり、アノテーションのためのあなたのクラスパスに。 希望に役立ちます!

関連する問題