关于对spring注入的误解
最近的项目中 spring配置的是default-autowire="byName"
也就是按名称来注入bean
比如配了一个<bean id="userDate" class="...(省略)"/>
写代码的时候带上setUserData(.......)方法就能注入了
对于大多数情况来说 只要驼峰形式书写都是没问题的
但是,当bean的id第
二个字母是大写字母的时候,就会出现问题
比如<bean id="
xCreat" class="..(省略)"/>
set方法
setXCreat(.....)
乍看没错,但就是注入不进去的,程序中对应的property就是
NULL
一直以为这或许是spring的一个BUG(现在想想真是汗颜....)
今天看《ibatis in action》 偶然才发现原来sun对javabean是有规范的(据说有114页。。。)
其中有这样的规定
属性名 (假定String类型) set方法名 get 方法名
xcreat void setXcreat(String xcreat) String getXcreat() 【最普通的情况】
xCreat void
setxCreat(String xCreat) String
getxCreat()
XCreat void
setXCreat(String XCreat) String
getXCreat()
Xcreat 不允许 不允许
显然 spring遵守了JavaBean的规范 遇到上面说的名为xCreat的bean时 注入时应该用的方法是
setxCreat(.......),
而非MyEclipse自动生成的setXCreat(.......)方法
如果非要用第二个字母是大写的id 那么set方法就需要手动修改一下