2016-09-05 10 views
0

私は春のJavaで初心者です。私はAutowiringを勉強していますが、クラスパスリソースで定義された 'theFirstTraveler'という名前のBeanを作成中にエラーが発生しました。このエラーを解決するには?私のソースコードの下に。Spring Java - Autowiring - クラスパスリソースで定義された名前のBeanを作成中にエラーが発生しました

ありがとうございました。

よろしく、

ボビー

beans.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" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> 

    <bean id="theFirstTraveler" class="com.tobuku.impl.Traveler"> 
     <constructor-arg ref="car"/>   

     <property name="origin" value="Jakarta"/> 
     <property name="destination" value="Surabaya"/> 
    </bean> 

    <bean id="theSecondTraveler" class="com.tobuku.impl.Traveler"> 
     <property name="car" ref="theOtherCar"/> 

     <property name="origin" value="Surabaya"/> 
     <property name="destination" value="Bandung"/> 
    </bean>  

    <bean id="theThirdTraveler" class="com.tobuku.impl.Traveler" autowire="byName"> 
     <property name="origin" value="Bandung"/> 
     <property name="destination" value="Semarang"/> 
    </bean> 

    <bean id="theFourthTraveler" class="com.tobuku.impl.Traveler" autowire="constructor"> 
     <property name="origin" value="Sukabumi"/> 
     <property name="destination" value="Jogja"/> 
    </bean> 

    <bean id="TheMercedes" class="com.tobuku.impl.Car"> 

     <constructor-arg type="java.lang.String"> 
      <value>Mercedes-Benz</value> 
     </constructor-arg> 

     <constructor-arg type="java.lang.String"> 
      <value>S-Class S550 4MATIC</value> 
     </constructor-arg> 

     <constructor-arg type="java.lang.String"> 
      <value>4.7L V8 Twin Turbocharger</value> 
     </constructor-arg> 

     <constructor-arg type="java.lang.String"> 
      <value>Automatic 7-Speed</value> 
     </constructor-arg>   

     <constructor-arg type="java.lang.String"> 
      <value>Gasoline</value> 
     </constructor-arg>   

     <property name="motion" value="My Human spirit is moving to the future..."/> 

    </bean> 

    <bean id="TheBmw" class="com.tobuku.impl.Car"> 

     <constructor-arg type="java.lang.String"> 
      <value>BMW</value> 
     </constructor-arg> 

     <constructor-arg type="java.lang.String"> 
      <value>7 Series 740Li</value> 
     </constructor-arg> 

     <constructor-arg type="java.lang.String"> 
      <value>3.0L I6</value> 
     </constructor-arg> 

     <constructor-arg type="java.lang.String"> 
      <value>Automatic 8-Speed</value> 
     </constructor-arg>   

     <constructor-arg type="java.lang.String"> 
      <value>Gasoline</value> 
     </constructor-arg>   

     <property name="motion" value="I am moving with pleasure. What an ultimate experience..."/> 

    </bean> 

App.java

package com.tobuku.common; 

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

import com.tobuku.impl.Traveler; 

public class App 
{ 
    public static void main(String[] args) 
    { 
     ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); 

     // First Traveler 
     Traveler firstTraveler = (Traveler) context.getBean("theFirstTraveler"); 

     System.out.println(firstTraveler); 
     firstTraveler.showCar(); 
     firstTraveler.startJourney(); 

     System.out.println("===================================================="); 

     // Second Traveler 
     Traveler secondTraveler = (Traveler) context.getBean("theSecondTraveler"); 

     System.out.println(secondTraveler); 
     secondTraveler.showCar(); 
     secondTraveler.startJourney(); 

     System.out.println("====================================================");   

     // Third Traveler 
     Traveler thirdTraveler = (Traveler) context.getBean("theThirdTraveler"); 

     System.out.println(thirdTraveler); 
     thirdTraveler.showCar(); 
     thirdTraveler.startJourney(); 

     System.out.println("====================================================");   

     // Fourth Traveler 
     Traveler fourthTraveler = (Traveler) context.getBean("theFourthTraveler"); 

     System.out.println(fourthTraveler); 
     fourthTraveler.showCar(); 
     fourthTraveler.startJourney(); 

     System.out.println("====================================================");    

     Vehicle carMercy = (Vehicle) context.getBean("TheMercedes"); 
     Vehicle carBmw = (Vehicle) context.getBean("TheBmw"); 

     System.out.println(carMercy); 
     carMercy.move(); 

     System.out.println("-----------------------------------------------------------"); 

     System.out.println(carBmw); 
     carBmw.move(); 

    } 
} 

Traveler.java

package com.tobuku.impl; 

import com.tobuku.common.Vehicle; 

public class Traveler { 

    private Vehicle car; 
    private String origin; 
    private String destination; 

    public Traveler(){ 
     origin = ""; 
     destination 
     = ""; 
    } 

    public Traveler(Vehicle car){ 
     System.out.println("**** Constructor is called ****"); 
     this.car = car; 
    } 

    public Vehicle getCar() { 
     return car; 
    } 

    public void setCar(Vehicle car) { 
     System.out.println("**** Setter is called ****"); 
     this.car = car; 
    } 

    public String getOrigin() { 
     return origin; 
    } 

    public void setOrigin(String origin) { 
     this.origin = origin; 
    } 

    public String getDestination() { 
     return destination; 
    } 

    public void setDestination(String destination) { 
     this.destination = destination; 
    } 

    @Override 
    public String toString(){ 
     return "Traveler [origin=" + origin + 
       "; destination=" + destination + "]"; 
    } 

    public void showCar(){ 
     System.out.println(car); 
    } 

    public void startJourney(){ 
     car.move(); 
    } 

} 

Car.java

package com.tobuku.impl; 

import com.tobuku.common.Vehicle; 

public class Car implements Vehicle { 

    private String brand; 
    private String type; 
    private String engine; 
    private String transmission; 
    private String fuel; 
    private String motion; 

    public Car(){ 
     brand = ""; 
     type = ""; 
     engine = ""; 
     transmission = ""; 
     fuel = ""; 
    } 

    public Car(String brand, String type, String engine, String transmission, String fuel){ 

     this.brand = brand; 
     this.type = type; 
     this.engine = engine; 
     this.transmission = transmission; 
     this.fuel = fuel; 
    } 

    public String getBrand() { 
     return brand; 
    } 

    public void setBrand(String brand) { 
     this.brand = brand; 
    } 

    public String getType() { 
     return type; 
    } 

    public void setType(String type) { 
     this.type = type; 
    } 

    public String getEngine() { 
     return engine; 
    } 

    public void setEngine(String engine) { 
     this.engine = engine; 
    } 

    public String getTransmission() { 
     return transmission; 
    } 

    public void setTransmission(String transmission) { 
     this.transmission = transmission; 
    } 

    public String getFuel() { 
     return fuel; 
    } 

    public void setFuel(String fuel) { 
     this.fuel = fuel; 
    } 

    public String getMotion() { 
     return motion; 
    } 

    public void setMotion(String motion) { 
     this.motion = motion; 
    } 

    public String toString(){ 

     return "Car [brand=" + brand + 
       "; type=" + type + 
       "; engine=" + engine + 
       "; transmission=" + transmission + 
       "; fuel=" + fuel + "]"; 

    } 

    public void move(){ 
     System.out.println(motion); 
    } 

} 

Vehicle.java

package com.tobuku.common; 

public interface Vehicle { 
    void move(); 
} 

ログイン

Sep 05, 2016 11:29:56 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 
INFO: Refreshing org[email protected]4d405ef7: startup date [Mon Sep 05 23:29:56 ICT 2016]; root of context hierarchy 
Sep 05, 2016 11:29:56 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from class path resource [Beans.xml] 
Sep 05, 2016 11:29:56 PM org.springframework.context.support.ClassPathXmlApplicationContext refresh 
WARNING: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'theFirstTraveler' defined in class path resource [Beans.xml]: Cannot resolve reference to bean 'car' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'car' is defined 
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'theFirstTraveler' defined in class path resource [Beans.xml]: Cannot resolve reference to bean 'car' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'car' is defined 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) 
    at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:648) 
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:145) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    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:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.tobuku.common.App.main(App.java:12) 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'car' is defined 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:702) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1180) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) 
    ... 17 more 

答えて

0

問題は、あなたが参照依存関係を持つBeanを作成しようということですCarしかし、そのような名前のBeanはありません。 TheMercedes beanをtheFirstTravelerにしてください。これが役に立たない場合は、スタック全体のトレースを提供してください。

関連する問題