我正在尝试一个非常基本的例子。我试图查看其他堆栈溢出答案,但无法解决此问题。我是新来的这个空间,让我知道如果我遗漏了什么。
这是我的错误日志:
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);
}
}
这是我的文件夹结构:
默认的bean名称是mySpringBeanAnd Depenence,你应该使用"m"
MySpringBeanWithDepenency test = (MySpringBeanWithDepenency)factory.getBean("mySpringBeanWithDepenency");
请尝试使用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容器决定要自动连接哪个实现。为此使用@限定符
。有关详细信息,请参见教程
尝试调试添加:
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,它运行时没有任何问题和缓存! 下