spring IOC的问题

M_y_s_k_y 2015-07-29 01:41:29
刚学spring ,看着说springIOC等于不需要自己new对象,由spring来管理,所以自己做了一个小实验,结果总是失败,在此请教朋友们解答疑虑! 项目采用springmvc+ibatis
----------spring里面的部分配置------------
<bean id="sqlMap"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"
value="WEB-INF/SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="dao" class="com.bh.common.dao.CommonDao">
<property name="sqlMapClient" ref="sqlMap" />
</bean>

<bean class="com.bh.common.dao.CommonDaoUtils">
<property name="dao" ref="dao" />
</bean>
-----------------------------------------------------------

package com.bh.common.dao;
public class CommonDaoUtils {

private static CommonDao dao ;

public static CommonDao getDao() {
return dao ;
}

public void setDao(CommonDao dao) {
CommonDaoUtils.dao = dao;
}
}
-------------------------------------------------------------
按照我的理解是这样的,通过spring的配置将CommonDao类注入给CommonDaoUtils,上面的这样配置程序没有问题。
问题是我将 <bean class="com.bh.common.dao.CommonDaoUtils">
<property name="dao" ref="dao" />
</bean>这段代码注释掉,不用spring的配置,而是自己在CommonDaoUtils类里面使用new,private static CommonDao dao = new CommonDao();改成这样后程序出现java.lang.NullPointerException异常,不知道是什么原因,spring里面的bean不就是不用自己new对象,由spring来完成吗,而我现在不用spring来完成,自己new却出现异常,请问是什么原因
...全文
144 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
GP0071 2015-07-29
http://blog.csdn.net/gaopeng0071/article/details/46896415 看这个博客中的图二,你讲数据库连接池使用IOC容器注入,不使用IOC容器去将数据库连接池Bean注入到CommonDaoUtils中,而是自己去new一个新对象,在运行的时候肯定是空指针异常。
回复
shmily3116 2015-07-29
spring注入的dao已经完成了数据库的相关配置,你直接new出来的dao里边是空的,什么都干不了 spring不是简单的new一下就完事了,它还会根据你配置实现dao内部属性的一些定义,如果你想自己new一个类的话,在new之后你需要手动配置dao内的数据库连接属性什么的,这才能与spring提供给你的dao对象一样
回复
M_y_s_k_y 2015-07-29
引用 2 楼 u011274826 的回复:
你自己new的dao里不还得重新创建数据库连接吗
dao里面采用spring注入,只CommonDaoUtils这个类使用new,使用spring这样注入是没有问题的<bean class="com.bh.common.dao.CommonDaoUtils"> <property name="dao" ref="dao" /> </bean>,但我把这段代码注释掉,然后这样写就不行了,private static CommonDao dao = new CommonDao();
回复
潇湘浪子 2015-07-29
你自己new的dao里不还得重新创建数据库连接吗
回复
Old-Summer 2015-07-29
需要调用的那个类里不要new,应该这样, private UtilService utilService; public void setUtilService(UtilService utilService) { this.utilService = utilService; }
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-07-29 01:41
社区公告
暂无公告