【发布时间】:2011-01-05 10:03:31
【问题描述】:
我对注入 bean 的整个想法很陌生,所以慢慢说。 :)
我有一个注入 bean 的类,但是当访问该属性时,该属性为空,我得到一个空指针异常。
来自/project-TRUNK/war-module/src/main/webapp/WEB-INF/spring-config/spring-bean.xml
<bean id="linkCheck"
class="com.dogwatch.util.LinkCheck">
<property name="linkDao" ref="jdbcLinkDao" />
</bean>
来自/project-TRUNK/war-module/src/main/webapp/WEB-INF/spring-config/spring-dao.xml
<bean id="jdbcLinkDao" class="com.dogwatch.util.jdbcLinkDao">
<property name="dataSource" ref="dataSource" />
<property name="linkJdbcDataTypesSupport" ref="linkJdbcDataTypesSupport"/>
</bean>
众所周知,DAO bean 很好,并且可以在其他几个类中工作。
package com.dogwatch.util;
public class LinkCheck {
private LinkDAO linkDao;
public LinkDAO getLinkDao() {
return linkDao;
}
public void setLinkDao(LinkDAO linkDao) {
this. linkDao = linkDao;
}
}
我一直在将它与使用相同 DAO bean 的其他类进行比较,但我找不到任何差异。
我确实看到 bean 被定义在:
信息 [2010-01-15 01:10:05,838] [主要] [XmlBeanDefinitionReader] [XmlBeanDefinitionReader.java:323] - 从 URL 加载 XML bean 定义 [文件:war-module/src/main/webapp/WEB-INF/spring-config/spring-dao.xml] 信息 [2010-01-15 01:10:05,858] [主要] [XmlBeanDefinitionReader] [XmlBeanDefinitionReader.java:323] - 从 URL 加载 XML bean 定义 [文件:war-module/src/main/webapp/WEB-INF/spring-config/spring-bean.xml] 信息 [2010-01-15 01:10:06,597] [主要] [DefaultListableBeanFactory] [DefaultListableBeanFactory.java:414] - 在 org.springframework.beans.factory.support.DefaultListableBeanFactory@3c01d5a0 中预实例化单例: 定义 bean [(snip) jdbcLinkDao, linkCheck(snip)businessLoggingAspect,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#1]; 工厂层次结构的根
有人对如何解决 bean 注入问题有任何建议吗?
【问题讨论】:
-
修复了导致前两个答案的错字。
-
我们仍然缺少一些信息,比如使用linkCheck bean的代码是如何得到它的?是不是也注入了?您是否从 Spring 上下文中检索它?我假设您没有执行 new LinkCheck(),但由于您是 Spring 新手,因此这是一个明智的开始问题。
-
@Wade:也修复你的
spring-dao.xml。谢谢。是的,回答史蒂文迪克。 -
@StevenDick,doh...告诉你我是新人...我确实还有一个新人。我将其更改为使用 getBean() 并且它现在可以正常工作 - 谢谢。如果您想将您的评论转换为答案,我会接受。
-
对我来说,我遇到了类似的问题,但问题是我的类路径中有一个 jar 的重复版本,所以它从“一个旧 jar”加载我的 xml 定义,这导致了混乱。奇数。