spring注入让人费解问题

如下spring注入方式<beanid="updateCreditDao"class="com.shiep.daoImpl.UpdateCreditDaoImpl"><p... 如下spring注入方式
<bean id="updateCreditDao" class="com.shiep.daoImpl.UpdateCreditDaoImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean>
<bean id="creditAction" class="com.shiep.action.UpdateCreditAction">
<property name="updateCreditDao" ref="updateCreditDao"></property>
</bean>

如上注入方式完全正确,但是当把id和ref里面的updateCreditDao换成首字母大写UpdateCreditDao的时候,再去执行findAll()方法的时候就报空指针异常,
我想了半天也没想通是什么原因,id和ref就是在spring里面有效,出了spring配置文件就没用了,只有<property name="updateCreditDao" 中的name才是与外界有关的,
只要这个不变,一切就OK,但是....貌似测验结果跟我分析的不一样,大家怎么认为呢?
展开
 我来答
般若兮若
2013-05-05 · TA获得超过2706个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:943万
展开全部
<property name="updateCreditDao" ref="updateCreditDao"></property>这句话中的name要跟你在代码中注入的对象名相同。而后面的ref则要跟你的bean的id相同
你是把com.shiep.daoImpl.UpdateCreditDaoImpl这个类当做updateCreditDao注入给creditAction这个action,再根据updateCreditDao这个name在action中使用
更多追问追答
追问
哈哈,这个我知道,所以才能成功做出来,我想知道的是为什么
这个里面的name和ref要一样?
追答
不需要。你把ref跟id的都改成updateDao也一样。
科技大互联
2013-05-05 · TA获得超过117个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:93.1万
展开全部
你好,UpdateCreditDao这个大写主要是和你的UpdateCreditDaoImpl实现里面用到的自定义“对象”要有统一的名字就是updateCrediDaoImpl,如果java代码里写的是大写的方式,那么配置文件也要大写。不统一的话就不能成功注入,也就会出现空指针异常了,因为配置文件找不到java代码里的一个叫UpdateCreditDaoImpl的实例。不知道明白了吗?。。
更多追问追答
追问
不需要UpdateCreditDaoImpl的实例吧,只需要接口UpdateCreditDao的实例,也就是
这个中的name,我想知道的是为什么name和ref的名字不一样时就无法成功注入?
追答
name和ref这个两个是可以不相同的,ref 是引用的bean 只要和这个的id是一样的就可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你之友aD
2013-05-05
知道答主
回答量:48
采纳率:0%
帮助的人:25.8万
展开全部
spring的注入是完全遵循javabean的get set命名规则(具体规则可以百度一下) 所以你改成大写 就跟这规则相违背的,导致注入不成功,当然规则是人定的可以改 但不能没有规则,所以你要用人家的东西就要按人家的规则来做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-05-05 · TA获得超过1243个赞
知道小有建树答主
回答量:2126
采纳率:55%
帮助的人:677万
展开全部
spring里使用反射的。。。名字不一样当然就找不到这个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式