關於對spring注入的誤解

關於對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方法就需要手動修改一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章