spring 中注入的对象为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 中注入的对象为空相关的知识,希望对你有一定的参考价值。

求高手指点: 具体代码:
spring的配置文件:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/wangzhan01">
</property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
<bean id="newsService" class="com.wangzhan.service.NewsServiceBMImpl">
<property name="newsDao" ref="newsDao"></property>
</bean>
<bean id="newsDao" class="com.wangzhan.dao.NewsDaoImpl"></bean>

<bean id="addNews" class="com.wangzhan.news.back.AddNews">
<property name="newsService" ref="newsService"></property>
</bean>
==================================================================
具体java代码:
private News news;
private NewsService newsService;
public News getNews()
return news;

public void setNews(News news)
this.news = news;

public NewsService getNewsService()
return newsService;

public void setNewsService(NewsService newsService)
this.newsService = newsService;

public String addNews()
news.setId(5);
newsService.saveNews(news);

return SUCCESS;

就是newsService.saveNews(news)报的:
java.lang.NullPointerException
newsService是null
=================================

web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

请问确认你的SPRING配置文件是否被正常加载,也就是说你在SPRING里注入的那BEAN都有被初始化了吗? 参考技术A 依赖注入失败,配置文件问题或者实体类没写set方法 参考技术B 在setNewsService方法上加断点,debug看看是否正确调用了set方法

另外,请检查spring配置文件,autowire方式是否争取,属性名称和方法名是否正确
参考技术C newsDao这个有声明吗?

继承一个抽象类,并实例化抽象类中定义的方法,这个方法返回spring注入的一个对象,值一直为空?

class Action extends AbstractObj
@Resource
private Object obj;
....
@Override
public Object getObj()
//这个地方返回的一直是null,求大神呀
return obj;

1、你在Spring里面有没有定义一个bean,id="obj",一定要id名和你的定义的那个属性名相同。
2、在action里面有没有给obj这个属性set和get方法,set方法一定要名否则不能注入。
3、或者你在定义action那个bean里就初始化这个属性,但是还是一定要先定义obj这个bean先,然后通过<property name="obj(属性名)" ref="obj"/> ref是引用你前面定义的obj那个bean这样,属性obj的值就被注入了。
参考技术A 真心不会答 参考技术B 你Action类注入到IoC容器了吗?

以上是关于spring 中注入的对象为空的主要内容,如果未能解决你的问题,请参考以下文章

判断字符串为空为 null 为 whitespace 工具类

Spring注入的DataSource为空

spring注入为空

linux字符测试

自动装配的 sessionFactory 对象为空

quartz的job中注入spring对象!