最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring和SpringMVC掃描注解類沖突的解決方案

 更新時(shí)間:2021年10月09日 11:10:50   作者:Java小寶  
這篇文章主要介紹了Spring和SpringMVC掃描注解類沖突的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring和SpringMVC掃描注解類沖突

最正確的配置方式

在主容器中applicationContext.xml中,將Controller的注解排除掉

 <context:component-scan base-package="com"> 
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
  </context:component-scan> 

而在springmvc.xml中,將Service注解給去掉

  <context:component-scan base-package="com"> 
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> 
  </context:component-scan> 

因?yàn)閟pring的context是父子容器,所以會(huì)產(chǎn)生沖突,由ServletContextListener產(chǎn)生的是父容器,springMVC產(chǎn)生的是子容器,子容器Controller進(jìn)行掃描裝配時(shí)裝配了@Service注解的實(shí)例,而該實(shí)例理應(yīng)由父容器進(jìn)行初始化以保證事務(wù)的增強(qiáng)處理,所以此時(shí)得到的將是原樣的Service(沒有經(jīng)過事務(wù)加強(qiáng)處理,故而沒有事務(wù)處理能力。

還有一種方式是將service層改用xml配置,其實(shí)這樣做也是變相的讓springmvc無法掃描service,而只能依賴父窗口也就是ServletContextListener來進(jìn)行初始化,這樣同樣被賦予了事務(wù)性。

也可以用直接掃描的方式

直接掃描比較省事,但是事務(wù)回得不到處理,所以在具體的層面上還需要加入注解去聲明事務(wù),比如在dao層和service層加入@Transactional

幾種不同配置的測(cè)試

(1)只在applicationContext.xml中配置如下

<context:component-scan base-package="com" />

啟動(dòng)正常,但是任何請(qǐng)求都不會(huì)被攔截,簡(jiǎn)而言之就是@Controller失效,出現(xiàn)404錯(cuò)誤

(2)只在springmvc.xml中配置

<context:component-scan base-package="com" />

啟動(dòng)正常,請(qǐng)求也正常,但是事物失效,也就是不能進(jìn)行回滾

(3)在applicationContext.xml和springmvc.xml中都配置

<context:component-scan base-package="com" />

啟動(dòng)正常,請(qǐng)求正常,也是事物失效,不能進(jìn)行回滾

(4)在applicationContext.xml中配置如下

<context:component-scan base-package="com.service" />

在springmvc.xml中配置如下

<context:component-scan base-package="com.action" />

或者按最正確的配置applicationContext.xml,將Controller的注解排除掉 ,springmvc.xml,將Service注解給去掉

此時(shí)啟動(dòng)正常,請(qǐng)求正常,事物也正常了。

Spring和SpringMVC注解掃描注意事項(xiàng)

現(xiàn)象

Springmvc和Spring設(shè)置自動(dòng)掃描文件夾自動(dòng)注入bean的時(shí)候有時(shí)候出現(xiàn)沖突

方法

1:springmvc設(shè)置只掃描controller

這里寫圖片描述

2:spring設(shè)置不掃描controller

這里寫圖片描述

代碼:

springmvc 的掃描設(shè)置只掃描controller  spring的掃描設(shè)置為不掃描controller的 防止重復(fù)注入bean管理   (出現(xiàn)未錯(cuò)誤)
<!-- 設(shè)置使用Spring注解的類所在的jar包  設(shè)置不掃描下面規(guī)則的 -->
    <context:component-scan base-package="com.oig">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
        <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan>
    <!-- 設(shè)置使用SpringMvc注解的類所在的jar包 設(shè)置只掃描自定義規(guī)則的-->
    <context:component-scan base-package="com.oig" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
        <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
    </context:component-scan>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置的示例詳解

    Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置的示例詳解

    這篇文章主要介紹了Java?for循環(huán)標(biāo)簽跳轉(zhuǎn)到指定位置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 詳解Java深拷貝,淺拷貝和Cloneable接口

    詳解Java深拷貝,淺拷貝和Cloneable接口

    這篇文章主要為大家詳細(xì)介紹了Java中Cloneable接口以及深拷貝與淺拷貝的相關(guān)知識(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-08-08
  • 教你如何寫springboot接口?

    教你如何寫springboot接口?

    這篇文章主要介紹了教你如何寫springboot接口,Spring?Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置,需要的朋友可以參考y一下
    2022-01-01
  • Java設(shè)計(jì)模式之共享模式/享元模式(Flyweight模式)介紹

    Java設(shè)計(jì)模式之共享模式/享元模式(Flyweight模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之共享模式/享元模式(Flyweight模式)介紹,本文講解了為什么使用共享模式/享元模式、如何使用共享模式/享元模式、Flyweight模式在XML等數(shù)據(jù)源中應(yīng)用等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 怎么運(yùn)行用記事本寫的java程序

    怎么運(yùn)行用記事本寫的java程序

    以下小編就為大家介紹一下,怎么運(yùn)行用記事本寫的java程序。需要的朋友可以過來參考下
    2013-08-08
  • Java回調(diào)機(jī)制解讀

    Java回調(diào)機(jī)制解讀

    本文主要介紹了Java回調(diào)機(jī)制的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • SpringMVC入門實(shí)例

    SpringMVC入門實(shí)例

    這篇文章主要介紹了SpringMVC入門實(shí)例,在springmvc入門教程里算是比較不錯(cuò)的,結(jié)構(gòu)也比較完整,需要的朋友可以參考。
    2017-11-11
  • Spring Boot CLI使用教程

    Spring Boot CLI使用教程

    本篇文章主要介紹了Spring Boot CLI使用教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java自定義映射resultMap定義及用法

    Java自定義映射resultMap定義及用法

    MyBatis的每一個(gè)查詢映射的返回類型都是ResultMap,當(dāng)我們提供返回類型屬性是resultType時(shí),MyBatis會(huì)自動(dòng)給我們把對(duì)應(yīng)值賦給resultType所指定對(duì)象的屬性,當(dāng)我們提供返回類型是resultMap時(shí),將數(shù)據(jù)庫中列數(shù)據(jù)復(fù)制到對(duì)象的相應(yīng)屬性上,可以用于復(fù)制查詢,兩者不能同時(shí)用
    2022-11-11
  • 基于servlet的執(zhí)行原理與生命周期(全面解析)

    基于servlet的執(zhí)行原理與生命周期(全面解析)

    下面小編就為大家分享一篇servlet的執(zhí)行原理與生命周期全面解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評(píng)論

阳谷县| 电白县| 苍山县| 天全县| 潞西市| 任丘市| 社会| 曲周县| 阿克| 桓仁| 雷山县| 崇礼县| 曲松县| 兴业县| 林甸县| 霍城县| 慈利县| 嘉荫县| 贵州省| 怀远县| 静乐县| 玉林市| 通州市| 绿春县| 龙口市| 邢台县| 滁州市| 永仁县| 方正县| 延长县| 永和县| 威海市| 沅陵县| 同心县| 芷江| 福建省| 衡东县| 雅江县| 绥德县| 白银市| 鄂州市|