org.springframework.beans.factory.NoSuchBeanDefinitionException没有得到解决

问题描述

我从Spring开始,并在基于XML的bean工厂中运行此Spring应用程序,它给出了NoSuchBeanDeFinitionException-

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDeFinitionException: No bean named 'myCoach' available
at org.springframework.beans.factory.support.DefaultListablebeanfactory.getBeanDeFinition(DefaultListablebeanfactory.java:816)
at org.springframework.beans.factory.support.Abstractbeanfactory.getMergedLocalBeanDeFinition(Abstractbeanfactory.java:1288)
at org.springframework.beans.factory.support.Abstractbeanfactory.doGetBean(Abstractbeanfactory.java:298)
at org.springframework.beans.factory.support.Abstractbeanfactory.getBean(Abstractbeanfactory.java:207)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1115)
at com.paras.springdemo.HelloSpringApp.main(HelloSpringApp.java:14)

类-HelloSpringApp.java

package com.paras.springdemo;

import org.springframework.context.support.ClasspathXmlApplicationContext;

public class HelloSpringApp {
    public static void main(String[] args) {
        ClasspathXmlApplicationContext context = new ClasspathXmlApplicationContext("classpath*:applicationContext.xml");
        Coach theCoach = context.getBean("myCoach",Coach.class);
        System.out.println(theCoach.getDailyWorkout());
        context.close();
    }
}

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

    <bean id="myCoach"
        class="com.paras.springdemo.TrackCoach">            
    </bean>
</beans>

Interface- Coach.java

package com.paras.springdemo;

public interface Coach {
    public String getDailyWorkout();
}

TrackCoach.java

package com.paras.springdemo;
public class TrackCoach implements Coach {

    @Override
    public String getDailyWorkout() {
        return "run 5k";
    }

}

解决方法

您在xml中缺少此行

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

然后改变

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath*:applicationContext.xml");

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

只需确保您的XML位于src / applicationContext.xml

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...