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

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

敖硕
2023-03-14

我对Spring框架非常陌生。我正在使用NetBeans作为IDE。我跟着几个教程自学。然而,我陷入了中间,不能继续前进。让我在这里分解一下我的项目:

我的项目文件夹结构如下:

有两个班;主要的一个主应用程序。java包含以下代码:

package com.myprojects.spring;

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

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context;
      context = new ClassPathXmlApplicationContext("classpath*:beans.xml");
      FirstPage obj;
      obj = (FirstPage) context.getBean("firstPage");
      obj.getMessage();     
      
   }
}

第二类文件第一页。java看起来像这样:

package com.myprojects.spring;

public class FirstPage {
    
   private String message;

   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
    
}

豆子。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.0.0.RELEASE.xsd
">
    <bean id = "firstPage" class = "com.myprojects.spring.FirstPage">
      <property name = "message" value = "Hello World!"/>
    </bean> 

</beans>

现在,我得到的错误如下:

组织。springframework。豆。工厂NoSuchBeanDefinitionException:未定义名为“firstPage”的bean

我知道我在这里犯了一些愚蠢的错误。谢谢你提前!

共有3个答案

马淳
2023-03-14

放豆子。xml到外部Meta-inf,

或者使用新的ClassPathXmlApplicationContext(“META-INF/beans.xml”);

还有http://www.springframework.org/schema/beans/spring-beans-4.0.0.RELEASE.xsd

应该改成

http://www.springframework.org/schema/beans/spring-beans-4.0.0.xsd,因为spring的xsd文件名不包含“RELEASE”。

xsd文件在spring-beans.jarorg.springframework.beans.factory.xml包中,请查看xsd文件是否在该包中。

巴洲
2023-03-14

根据您发布的目录结构,很可能src/main/Resources在您的类路径上。如果要引用Spring上下文文件beans.xml,则必须相对于类路径上的文件夹指定它。因此,你应该尝试:

context = new ClassPathXmlApplicationContext("classpath:/META-INF/beans.xml");

除此之外:符号classpath*:beans.xml表示您希望在所有上下文文件中读取名称为beans.xml的文件。

朱渝
2023-03-14

几乎类似的问题已经讨论过了。我认为您的程序无法定位beans.xml

尝试这样做:

context = new ClassPathXmlApplicationContext("META-INF/beans.xml");

编辑:

此新错误XmlBeanDefinitionStoreException表示您的架构无效。请尝试按照以下答案之一所述更改您的模式:

>

<?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-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <bean id = "firstPage" class = "com.myprojects.spring.FirstPage">
      <property name = "message" value = "Hello World!"/>
    </bean> 
</beans>
 类似资料:
  • 我正在尝试一个非常基本的例子。我试图查看其他堆栈溢出答案,但无法解决此问题。我是新来的这个空间,让我知道如果我遗漏了什么。 这是我的错误日志: 2017年12月11日上午8:40:20org.springframework.beans.factory.xml.XmlBean定义Reader loadBean定义信息:从类路径资源[BeanDefinition.xml]加载XML bean定义]线程

  • 我有一个简单的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,它运行时没有任何问题和缓存! 下