gpt4 book ai didi

java - 没有这样的bean异常

转载 作者:行者123 更新时间:2023-11-30 02:02:19 26 4
gpt4 key购买 nike

无法解决以下异常。尝试使用 spring 依赖注入(inject)的示例。

我收到错误“没有定义名为“book”的 bean,即使我已在 xml 文件中定义了它。

我需要将 xml 中定义的作者和标题打印到控制台。

异常如下:

    Sep 21, 2018 3:05:23 AM org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@37bba400: startup date [Fri Sep 21 03:05:23 MDT 2018]; root of context hierarchy
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'book' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:701)
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:202)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1082)
at com.Rawal.Srishti.SDI.Driver_new.main(Driver_new.java:10)

Book.java:

    package com.Rawal.Srishti.SDI;

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

@Component
class Book extends Media {
private static int order = 1;
private String author;
@Autowired
public Book(String title, String author) {
this.title = title;
this.author = author;
}

public String getAuthor() {
return author;
}
public String getTitle() {
return title;
}
static public int getOrder() {
return order;
}
@Override
protected String compareString() {
return getOrder() + getTitle() + getAuthor();
}
public String toString() {
return getTitle() + " by " + getAuthor();
}

public int compareTo(Media obj) {
if(obj instanceof Book) {
return -(this.getTitle().compareTo(obj.getTitle()));
}

return 444;

}
}

驱动程序.java:

package com.Rawal.Srishti.SDI;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Driver_new {
public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext ctx =
new AnnotationConfigApplicationContext("Rawal_spring.xml");
Book m = (Book) ctx.getBean("book", Book.class);
System.out.println(m.getTitle());
System.out.println(m.getAuthor());
}
}

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-3.0.xsd">

<bean id = "book" class = "com.Rawal.Srishti.SDI.Book" >
<constructor-arg index="0" ref="Srishti" />
<constructor-arg index="1" ref="Rawal"/>
</bean>

</beans>

最佳答案

您似乎没有使用正确类型的应用程序上下文。

您正在使用的AnnotationConfigApplicationContext是基于注释的,其String参数是要扫描的基本java包,而不是文件名。

您应该使用 ClassPathXmlApplicationContext (如果您的文件位于类路径中)或 FileSystemXmlApplicationContext ,例如:

ApplicationContext ctx = new ClassPathXmlApplicationContext("Rawal_spring.xml");

关于java - 没有这样的bean异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52440458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com