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

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

SpringMVC Controller命名沖突的問題

2019-11-11 06:10:18
字體:
來源:轉載
供稿:網友

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| 日本久久久久久久久| 黑人狂躁日本妞一区二区三区| 精品女同一区二区三区在线播放| 色一区av在线| 久久久久日韩精品久久久男男| 伊人激情综合网| 国产suv精品一区二区三区88区| 久久视频在线播放| 欧美性理论片在线观看片免费| 欧美日韩精品在线视频| 日韩亚洲在线观看| 国产在线高清精品| 亚洲综合日韩中文字幕v在线| 欧美另类在线观看| 亚洲欧美国产精品va在线观看| 国产精品第10页| 国产一区私人高清影院| 亚洲欧美中文日韩在线v日本| 亚洲视频在线观看| 日韩精品视频三区| 欧美床上激情在线观看| 亚洲精品自在久久| 亚洲永久免费观看| 国产精品入口夜色视频大尺度| 国产97在线|亚洲| 精品精品国产国产自在线| 久久久视频免费观看| 国产精品日日摸夜夜添夜夜av| 精品久久中文字幕| 一区二区成人av| 国产成人精品最新| 欧美日韩一区二区三区在线免费观看| 国产成人一区二区| 欧美性视频网站| 欧美日韩国产成人在线| 亚洲曰本av电影| 一区二区三区在线播放欧美| 97视频网站入口| 一区二区亚洲欧洲国产日韩| 欧美大片免费看| 亚洲精品之草原avav久久| 国产一区二区成人| 国产成人激情小视频| 中文字幕日韩欧美在线视频| 中文字幕自拍vr一区二区三区| 精品国产一区二区三区在线观看| 亚洲欧美制服综合另类| 国产ts人妖一区二区三区| 91亚洲国产精品| 亚洲欧美国产视频| 午夜精品一区二区三区在线| 成人久久18免费网站图片| 在线一区二区日韩| 欧美日韩国产精品一区二区不卡中文| 欧美色另类天堂2015| 亚洲性生活视频在线观看| 隔壁老王国产在线精品| 日韩av快播网址| 亚洲欧美日本伦理| 精品欧美激情精品一区| 亚洲天堂第二页| 欧美天堂在线观看| 精品国产乱码久久久久久虫虫漫画| 国产啪精品视频| 91精品国产91久久久久久最新| 亚洲国产婷婷香蕉久久久久久| 亚洲欧美日韩天堂一区二区| 欧美精品生活片| 亚洲欧美综合另类中字| 国产91在线播放| 亚洲人成在线免费观看| 国产精品成人观看视频国产奇米| 国产日韩精品一区二区| 色诱女教师一区二区三区| www.99久久热国产日韩欧美.com| 国产在线不卡精品| 国产91在线播放精品91| 久热精品在线视频| 欧美主播福利视频| 国内偷自视频区视频综合| 成人免费观看49www在线观看| 国产日韩精品在线播放| 中文字幕精品在线视频| 亚洲偷熟乱区亚洲香蕉av| 国产精品成人av在线| 操人视频在线观看欧美| 亚洲精品福利视频| 国产日韩欧美黄色| 91久久久久久久久久| 国内免费久久久久久久久久久| 亚洲精品之草原avav久久| 亚洲国产成人在线播放| 日韩欧美一区视频| 在线午夜精品自拍| 亚洲男女自偷自拍图片另类| 日韩国产精品视频| 亚洲成人免费在线视频| 久久免费国产视频| 欧美精品一区二区免费| 国产精品高潮呻吟久久av野狼| 亚洲国产91色在线| 国产亚洲精品美女久久久久| 亚洲女人初尝黑人巨大| 国产精品v日韩精品| 亚洲欧洲一区二区三区久久| 中文字幕欧美亚洲| 久久久久国产精品免费| xxxxx91麻豆| 久久精品视频一| 日韩激情第一页| 中文字幕不卡av| 亚洲精品视频免费在线观看| 国产欧美在线播放| 日韩欧美第一页| 久久国产精品久久精品| 国产va免费精品高清在线观看| 国产精品国产福利国产秒拍| 亚洲无限乱码一二三四麻| 亚洲日本欧美日韩高观看| 欧美激情视频网| 亚洲精品一区二区网址| 亚洲激情在线观看视频免费| 亚洲欧美一区二区三区情侣bbw| 91嫩草在线视频| 成人网页在线免费观看| 精品夜色国产国偷在线| 亚洲一区二区三区乱码aⅴ| 欧美一级成年大片在线观看| 国产视频精品免费播放| 欧美激情乱人伦| 亚洲一区二区三区成人在线视频精品| 不卡毛片在线看| 国产成人a亚洲精品| 一本色道久久综合亚洲精品小说| 2025国产精品视频| 18性欧美xxxⅹ性满足| 日韩中文字幕网站| 欧美另类交人妖| 国产精品福利久久久| 亚洲自拍偷拍色片视频| 欧美午夜性色大片在线观看| 日韩在线一区二区三区免费视频| 高跟丝袜欧美一区| 自拍偷拍亚洲精品| 国产精品久久一区主播| 亚洲国产精品字幕| 日本一欧美一欧美一亚洲视频| 国产精品久久久久久久久男| 狠狠色狠狠色综合日日小说| 国产精品91一区| 美女视频黄免费的亚洲男人天堂| 国产精品九九久久久久久久| 国产精品日韩在线| 国语自产精品视频在线看| 日韩在线播放一区| 精品免费在线观看| 免费99精品国产自在在线| 欧美在线视频在线播放完整版免费观看| 韩国精品美女www爽爽爽视频|