繁体   English   中英

Spring Injected Bean属性为null

[英]Spring Injected Bean property is null

我对注射豆子的想法很新,所以慢慢说。 :)

我有一个注入bean的类,但是当访问该属性时,该属性为null,我得到一个空指针异常。

来自/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的定义:

INFO [2010-01-15 01:10:05,838] [main] [XmlBeanDefinitionReader] [XmlBeanDefinitionReader.java:323] - 从URL加载XML bean定义[file:war-module / src / main / webapp / WEB-INF / spring-config / spring-dao.xml] INFO [2010-01-15 01:10:05,858] [main] [XmlBeanDefinitionReader] [XmlBeanDefinitionReader.java:323] - 从URL加载XML bean定义[file:war-module / src / main / webapp / WEB-INF / spring-config / spring-bean.xml] INFO [2010-01-15 01:10:06,597] [main] [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注入问题有任何建议?

我正在扩大我对OP问题的评论,因为它似乎有帮助......

我们仍然缺少一些信息,例如使用linkCheck bean的代码如何获取它? 它也注射了吗? 你是从Spring上下文中检索它的吗? 我假设你没有做new LinkCheck() ,但是因为你是Spring的新手,这是一个明智的开始问题。

如果它控制bean的创建,Spring只能注入bean:如果你做了new MyClass()那么Spring容器不知道对象并且不能进行注入。

有一个潜在的问题是'jdbcLinkDao'的类型是'jdbcLinkDao',但是setter的参数类型是LinkDAO。 (如果'jdbcLinkDao'是'LinkDAO'的子类型,可能没问题......但是要修改类名!)

如果这不是问题,我建议你:

  • 将日志级别设置为DEBUG,

  • 如果没有显示任何内容,请向LinkCheck.setLinkDAO()添加跟踪打印,以查看正在设置的值...以及何时设置它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM