当前位置: 首页 > 知识库问答 >
问题:

NoSuchBeanDefinitionException:未定义名为“name”的bean

於宾白
2023-03-14

我正在尝试一个非常基本的例子。我试图查看其他堆栈溢出答案,但无法解决此问题。我是新来的这个空间,让我知道如果我遗漏了什么。

这是我的错误日志:

2017年12月11日上午8:40:20org.springframework.beans.factory.xml.XmlBean定义Reader loadBean定义信息:从类路径资源[BeanDefinition.xml]加载XML bean定义]线程“主”中的异常org.springframework.beans.factory.NoSuchBean定义异常:没有名为“MySpringBeanAnd Depenence”的bean定义在org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean定义(DefaultListableBeanFactory.java:638)在org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBean定义(AbstractBeanFactory.java:1159)在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:282)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)org.springframework.context.support.AbstractApplication ationContext.getBean(AbstractApplication ationContext.java:973)model.main.Main.main(Main. java: 18)

这清楚地表明它找不到依赖的Myspringbean

这是我的豆efinition.xml

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<context:component-scan base-package="model.testbean" />
<context:component-scan base-package="model.writer" />

这是我的主要课程:

package model.main;

/**
 * Created by barora on 12/10/2017.
 */

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import model.testbean.MySpringBeanWithDepenency;

public class Main {
    public static void main(String args[]){
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "BeanDefinition.xml");
        BeanFactory factory = context;
        MySpringBeanWithDepenency test = (MySpringBeanWithDepenency) factory.getBean("MySpringBeanWithDepenency");
        test.run();
    }
}

这是我的独立的Spring

package model.testbean;

/**
 * Created by barora on 12/10/2017.
 */

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

import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;

import model.writer.IWriter;
import org.springframework.stereotype.Service;


@Service
public class MySpringBeanWithDepenency {

    private IWriter writer;

    @Autowired
    public void setWriter(IWriter writer){
        this.writer = writer;
    }

    public void run(){
        String s = "This is my test";
        writer.writer(s);
    }
}

这是我的文件夹结构:

共有3个答案

何峰
2023-03-14

默认的bean名称是mySpringBeanAnd Depenence,你应该使用"m"

MySpringBeanWithDepenency test = (MySpringBeanWithDepenency)factory.getBean("mySpringBeanWithDepenency");
栾和风
2023-03-14

请尝试使用MySpringBeanWithDependency测试=(MySpringBeanWithDependency)工厂。getBean(myspringBeanWithDependency.class)

编辑

所以我使用给定的项目结构重新创建了代码。除了我在IWriter中使用了以下代码之外,它还能正常工作

  package model.writer;

    public interface IWriter {

        void writer(String s);
    }

以及如何实施

package model.writer;

import org.springframework.stereotype.Component;

@Component
public class NiceWriter implements IWriter {
    public void writer(String s) {

    }
}

编辑2如果您想为IWriter接口提供两个实现,并且两个实现都应该是spring管理的bean,那么您需要帮助spring容器决定要自动连接哪个实现。为此使用@限定符。有关详细信息,请参见教程

孟英光
2023-03-14

尝试调试添加

System.out.println("Bean names: " + Arrays.toString(context.getBeanNamesForType(MySpringBeanWithDependency.class)));

如果这将打印一个空列表,则表示您的类路径扫描存在问题。如果它打印了一个名字,那么这个名字可以用来获取bean。

或者,不要使用factory.getBean(String name),而是使用factory.getBean(MySpringBeanBackDependency.class),这样您就不需要知道Spring给您的bean取了什么名字。

 类似资料:
  • 我对Spring框架非常陌生。我正在使用NetBeans作为IDE。我跟着几个教程自学。然而,我陷入了中间,不能继续前进。让我在这里分解一下我的项目: 我的项目文件夹结构如下: 有两个班;主要的一个主应用程序。java包含以下代码: 第二类文件第一页。java看起来像这样: 豆子。xml文件如下所示: 现在,我得到的错误如下: 组织。springframework。豆。工厂NoSuchBeanDe

  • 我有一个简单的spring 4 WebMVC应用程序(-config),我想添加JPA。但是,当我尝试运行应用程序时(就像在Tomcat上的deloyed一样),我会发现:什么可能是错误的来源? 创建名为“index controller”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beancreationexc

  • 我之前在我的项目中使用了XML配置,一切都正常工作。 我们正在逐步转向java配置,所以现在我正处于一个混合使用java和XML配置的阶段。 我得到以下错误: UnsatisfiedDependencyException:创建名为“bean B”的bean时出错:通过字段“bean A”表示未满足的依赖关系; 嵌套异常是org.springframework.beans.factory.nosuc

  • 我正在尝试使用基于Java的配置而不是来自这篇博文的XML配置将配置引入Spring Boot:http://blog.novoj.net/2012/03/27/combining-custom-annotations-for-securing-methods-with-spring-security/ 我得到以下例外: org . spring framework . beans . facto

  • 问题内容: JDK1.7 Tomcat8 Redis SV 3.0 Spring3.2.14,Jedis 2.8.1,Spring Session 1.2,Spring Data Redis 1.7 这是我的日志。我不知道如何解决这个问题。 看起来RedisHttpSessionConfiguration bean已经创建, 为什么还没有定义filter bean? 我无法更改为spring4,因

  • 我有一个Spring服务正在检查数据库条目。为了最小化我的存储库调用,两个find方法都是“@cacheable”。但是,当我尝试初始化我的服务bean,而我的配置类有一个CacheManager bean定义时,我会得到以下NosuchBeanDefinitionException: 如果我取出CacheManager bean定义,我可以初始化我的服务bean,它运行时没有任何问题和缓存! 下