亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SpringMVC Controller命名沖突的問題

2019-11-11 05:36:13
字體:
來源:轉載
供稿:網友

SPRingMVC conflicts with existing, non-compatible bean definition of same name and class 的解決辦法,springmvc獲取bean

問題起因

最近,項目組的里的同事遇到一個問題,他自己負責的模塊,SpringMVC的Controller與其他模塊的Controller 類名重名了,導致整個工程都起不來了。

后臺報的錯誤是這樣的:

[java] view plain copy××Controller' for bean class [××ontroller] conflicts with existing, non-compatible bean definition of same name and class   

午飯時,他一直和我抱怨這個問題,還說找不到辦法。

后面我想了一下,SpringMVC的Controller 應該是采用類似鍵值對(key/value)的映射方式處理的。而當中的鍵,默認是用cotroller的類名(非全類名)作為鍵。這樣,如果不同包下面的兩個Contoller 重名的話,就會導致SpringMVC的容器管理中的controller map中的key重復了。

解決這個問題也比較簡單。

在@Controller 中,使用重名名就可以了

如 下例子:[java] view plain copytest.controller.bill.BillSaveController    package test.controller.bill;    import org.springframework.stereotype.Controller;  import org.springframework.web.bind.annotation.RequestMapping;    /**  * Created by liuch on 5/27/15.  */  @Controller  @RequestMapping("/billsave")  public class BillSaveController {        @RequestMapping("/dosave")      public String saveBill(){            return "billsave";      }    }  及 test.controller.bill.BillSaveController[java] view plain copypackage test.controller.billsave;    import org.springframework.stereotype.Controller;  import org.springframework.web.bind.annotation.RequestMapping;    /**  * Created by liuch on 5/27/15.  */  @Controller  @RequestMapping("/billsave_test")  public class BillSaveController {        @RequestMapping("/test")      public String test(){          return "test";      }    }  

上面這兩個代碼雖然在不同的包下面,即全類名不同,但是類名卻是相同。

這樣,在Tomcat 啟動的時候,后臺會報錯:

[java] view plain copySEVERE: Context initialization failed  org.springframework.beans.factory.BeanDefinitionStoreException:     Unexpected exception parsing xml document from ServletContext resource  [/WEB-INF/dispatcher-servlet.xml];     nested exception is java.lang.IllegalStateException:     Annotation-specified bean name 'billSaveController' for   bean class [test.controller.billsave.BillSaveController]   conflicts with existing, non-compatible bean definition of same name   and class [test.controller.bill.BillSaveController]  

問題原因:

因為如果在使用注解 @Controller 時候,如果不使用命名,而SpringMVC會默認把類名的頭一個字母小寫,然后放到一個map中。

比如上面的例子,盡管上面兩個類全類名不同,但是他們使用了@Controller 注解的時候,都沒有使用命名。在SpringMVC在掃描Controller的時候,會把他們都默認解析為 billSaveController.然后以這個billSaveController為鍵(key), 放到一個全局的map中。

這樣,就會出現兩個鍵完全一樣的Controller。由于SpringMVC不使用覆蓋的方式處理具有相同鍵的不同全類名的Controller,、掃描的時候就會包上面的錯誤。

解決的辦法:

在@Controller上使用名稱

如:test.controller.bill.BillSaveController中

[java] view plain copypackage test.controller.bill;    import org.springframework.stereotype.Controller;  import org.springframework.web.bind.annotation.RequestMapping;    /**  * Created by liuch on 5/27/15.  */  @Controller("testbillsave")  @RequestMapping("/billsave")  public class BillSaveController {        @RequestMapping("/dosave")      public String saveBill(){            return "billsave";      }    }  
test.controller.billsave.BillSaveController中,使用:[java] view plain copypackage test.controller.billsave;    import org.springframework.stereotype.Controller;  import org.springframework.web.bind.annotation.RequestMapping;  /**  * Created by liuch on 5/27/15.  */  @Controller("realbillsave")  @RequestMapping("/billsave_test")  public class BillSaveController {        @RequestMapping("/test")      public String test(){          return "test";      }    }  

上面兩個Controller中,只要保證一個有命名即可,但是最好兩個都使用上。

這是一種良好的編程方式,因為你無法保證其他人不會使用和你一樣的類名的Controller。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕久久久av一区| 国产香蕉精品视频一区二区三区| 国产精品中文字幕在线观看| 欧美日韩福利电影| 日韩欧美一区二区三区| 精品在线小视频| 日本高清不卡在线| 亚洲精品欧美极品| 欧美视频不卡中文| 国产成人亚洲综合91| 亚洲奶大毛多的老太婆| 欧美亚洲第一区| 中文字幕日韩精品在线观看| 高潮白浆女日韩av免费看| 国产精品网站大全| 亚洲精品天天看| 国产精品久久久av久久久| 中文字幕欧美亚洲| 国产999精品久久久影片官网| 91精品国产自产在线观看永久| 欧美黑人巨大xxx极品| 免费91麻豆精品国产自产在线观看| 精品视频—区二区三区免费| 亚洲精品一区二三区不卡| 最近2019中文字幕第三页视频| 国产亚洲精品久久久优势| 在线观看不卡av| 国产成人精品免高潮费视频| 国产精品成人v| 国产欧美日韩丝袜精品一区| 久久久99久久精品女同性| 精品久久久视频| 国产精品嫩草影院久久久| 亚洲最大成人免费视频| 日韩hd视频在线观看| 亚洲国产古装精品网站| 亚洲精品日韩久久久| 美女国内精品自产拍在线播放| 国产91精品久久久久久久| 韩国欧美亚洲国产| 亚洲在线免费观看| 国精产品一区一区三区有限在线| 久久人人爽人人爽爽久久| 久久久爽爽爽美女图片| 91在线观看欧美日韩| 狠狠躁夜夜躁久久躁别揉| 久久艳片www.17c.com| 久久深夜福利免费观看| 久久久之久亚州精品露出| 日本成人在线视频网址| 日韩在线中文字幕| 久久久久久久久久久av| 亚洲精品电影网| 国产精品亚洲激情| 亚洲天堂av在线免费| 丰满岳妇乱一区二区三区| 久久久久久久久久久人体| 精品视频久久久久久久| 国产亚洲精品久久久优势| 日韩欧美视频一区二区三区| 久久久久久久一区二区| 亚洲精品日韩丝袜精品| 欧美国产日本高清在线| 久久在精品线影院精品国产| 91亚洲一区精品| 日韩免费在线视频| 欧美性色视频在线| 精品国产美女在线| 97热在线精品视频在线观看| 欧美电影在线观看| 成人h猎奇视频网站| 亚洲成人久久一区| 欧美壮男野外gaytube| 久久久久久999| 激情久久av一区av二区av三区| 北条麻妃一区二区在线观看| 欧美一区二区三区免费观看| 777精品视频| 中文字幕成人在线| 国产精品久久国产精品99gif| 成人日韩av在线| 久久久视频在线| 国产精品wwww| 国产亚洲一级高清| 91九色综合久久| 亚洲欧洲在线视频| 热久久视久久精品18亚洲精品| 国产日韩在线亚洲字幕中文| 久久99精品久久久久久噜噜| 欧美精品电影在线| 亚洲性无码av在线| 成人网欧美在线视频| 97视频在线观看免费高清完整版在线观看| 亚洲人高潮女人毛茸茸| 91中文字幕一区| 亚洲国产欧美一区二区三区久久| 成人在线精品视频| 美女精品视频一区| 久久久久久亚洲精品中文字幕| 欧美成人精品一区| 成人激情视频小说免费下载| 欧美日韩黄色大片| 91精品国产免费久久久久久| 亚洲天堂色网站| 欧美精品情趣视频| 神马久久久久久| 亚洲人成欧美中文字幕| 国内精久久久久久久久久人| 欧美成人精品影院| 精品国产成人av| 亚洲无av在线中文字幕| 亚洲欧洲国产伦综合| 欧美亚洲日本黄色| 中文字幕不卡在线视频极品| 97精品视频在线播放| 日韩久久免费视频| 日韩一级黄色av| 欧美日韩国产综合新一区| 欧美成人三级视频网站| 欧美亚洲在线观看| 久久久中文字幕| 亚洲男人天堂手机在线| 亚洲男人天堂2019| 国色天香2019中文字幕在线观看| 日韩中文字幕av| 国产精品第七影院| 欧美成人四级hd版| 久久99精品久久久久久噜噜| 国产精品入口免费视频一| 久久久久久久爱| 久久久免费精品视频| 精品国产一区二区三区久久久| 亚洲国产一区自拍| 91超碰caoporn97人人| 日本国产精品视频| 欧洲永久精品大片ww免费漫画| 97香蕉超级碰碰久久免费软件| 日韩国产高清视频在线| 日韩精品视频在线播放| 久久综合五月天| 国产精品h片在线播放| 欧美日韩国产页| 欧美大全免费观看电视剧大泉洋| 91久久精品日日躁夜夜躁国产| 日韩成人高清在线| 欧美日韩999| 亚洲视频在线观看网站| 欧美中文在线免费| 久久免费视频在线| 97在线视频一区| 国产69精品久久久久9999| 国产精品精品视频一区二区三区| 欧美日韩在线视频一区二区| 久久成年人免费电影| 日本19禁啪啪免费观看www| 久久精品国产久精国产思思| 亚洲第一精品夜夜躁人人爽| 亚洲影院高清在线| 亚洲欧美视频在线| 国产主播精品在线| 97久久超碰福利国产精品…| 国产精品444| 55夜色66夜色国产精品视频| 国产精品一区二区三区在线播放|