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

基于spring同名bean覆蓋問(wèn)題的解決

 更新時(shí)間:2021年09月22日 11:04:25   作者:ado1986  
這篇文章主要介紹了spring同名bean覆蓋問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

spring同名bean覆蓋問(wèn)題

默認(rèn)情況下,spring在處理同一個(gè)ApplicationContext中名稱相同的bean時(shí)

分為兩種情況處理

1、如果兩個(gè)bean是在同一個(gè)配置文件中,那么spring會(huì)報(bào)錯(cuò)。

2、如果兩個(gè)bean是在不同的配置文件中,默認(rèn)情況下,spring會(huì)覆蓋先前的bean。

在配置文件很多時(shí),如果在啟動(dòng)時(shí),對(duì)于同名的bean加載沒(méi)有異常信息,出現(xiàn)問(wèn)題后會(huì)比較難以定位。

在spring中,處理容器的元數(shù)據(jù)信息時(shí),默認(rèn)使用DefaultListableBeanFactory類,該類中有個(gè)屬性:allowBeanDefinitionOverriding,默認(rèn)情況下為true,即允許重名的bean可以被覆蓋。

還好,spring有辦法對(duì)改屬性賦值。

重寫ContextLoaderListener,對(duì)于web應(yīng)用,容器類型為XmlWebApplicationContext,在該類中設(shè)置allowBeanDefinitionOverriding為false,然后在spring啟動(dòng)時(shí),碰到同名bean就會(huì)拋出異常。

案例如下

public class TradeContextLoaderListener extends ContextLoaderListener {
 @Override
 protected void customizeContext(ServletContext servletContext,
   ConfigurableWebApplicationContext applicationContext) {
  super.customizeContext(servletContext, applicationContext);
  XmlWebApplicationContext context = (XmlWebApplicationContext) applicationContext;
  context.setAllowBeanDefinitionOverriding(false);
 }
}

配置web.xml:

 <listener>
  <description>spring監(jiān)聽(tīng)器</description>
  <listener-class>com.***.trade.system.web.util.TradeContextLoaderListener</listener-class>
 </listener>

spring 子類覆蓋父類中注入的bean

我們?cè)谠O(shè)計(jì)程序框架的時(shí)候,會(huì)設(shè)計(jì)一個(gè)抽象基類,子類繼承這個(gè)基類,共有的方法放到基類中去,使用spring后使代碼變的很簡(jiǎn)單,現(xiàn)在遇到的問(wèn)題是在基類中注入bean后,子類不可能都會(huì)是有這個(gè)bean,那么需要考慮到子類需要覆蓋或者說(shuō)重新注入個(gè)性化的bean

有三種方法來(lái)實(shí)現(xiàn)這個(gè)效果,以下是一種方法,如下面代碼:

抽象基類

public abstract class AbstractNameService
{
 public abstract String getname();
}

兩個(gè)實(shí)現(xiàn)類:

@Service("firstNameService")
public class FirstNameService extends AbstractNameService
{ 
 @Override
 public String getname()
 {
  return "FirstName";
 } 
}
@Service("nameService")
public class NameService extends AbstractNameService
{ 
 @Override
 public String getname()
 {
  return "Name";
 } 
}

另外一個(gè)抽象基類

public abstract class AbstractService
{
 protected AbstractNameService nameService; 
 public String getName()
 {
  return nameService.getname();
 } 
 public AbstractNameService getService()
 {
  return nameService;
 } 
 <span style="color:#ff9966;">@Resource(name = "nameService")</span>
 public void setService(AbstractNameService nameService)
 {
  this.nameService = nameService;
 } 
}

實(shí)現(xiàn)類:

@Service("getNameService")
public class GetNameService extends AbstractService
{ 
 <span style="color:#ff9900;">@Resource(name = "firstNameService")</span>
 @Override
 public void setService(AbstractNameService nameService)
 {
  this.nameService = nameService;
 } 
}

controller

@Controller
public class UnionpayQuickPayDSMVC
{
 @Resource
 private AbstractService getNameService; 
 @RequestMapping(value = "/*", method = RequestMethod.GET)
 public void execute(HttpServletRequest request, HttpServletResponse response)
 {
  try
  {
   response.getWriter().write(getNameService.getName());
  }
  catch (IOException e)
  {
   System.out.println(e);
  }
 }
}

在applicationContext.xml和springmvc的配置文件只需要添加一個(gè)包<context:component-scan/>標(biāo)簽就行了

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

相關(guān)文章

  • SpringBoot+Redisson自定義注解一次解決重復(fù)提交問(wèn)題

    SpringBoot+Redisson自定義注解一次解決重復(fù)提交問(wèn)題

    項(xiàng)目中經(jīng)常會(huì)出現(xiàn)重復(fù)提交的問(wèn)題,本文主要介紹了SpringBoot+Redisson自定義注解一次解決重復(fù)提交問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Springboot集成RabbitMQ報(bào)錯(cuò)及解決

    Springboot集成RabbitMQ報(bào)錯(cuò)及解決

    這篇文章主要介紹了Springboot集成RabbitMQ報(bào)錯(cuò)及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java開(kāi)發(fā)者結(jié)合Node.js編程入門教程

    Java開(kāi)發(fā)者結(jié)合Node.js編程入門教程

    這篇文章主要介紹了Java開(kāi)發(fā)者結(jié)合Node.js編程入門教程,我將先向您展示如何使用Java EE創(chuàng)建一個(gè)簡(jiǎn)單的Rest服務(wù)來(lái)讀取 MongoDB數(shù)據(jù)庫(kù)。然后我會(huì)用node.js來(lái)實(shí)現(xiàn)相同的功能,需要的朋友可以參考下
    2014-09-09
  • java實(shí)現(xiàn)Fibonacci算法實(shí)例

    java實(shí)現(xiàn)Fibonacci算法實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)Fibonacci算法的方法,以實(shí)例形式較為詳細(xì)的分析了java實(shí)現(xiàn)Fibonacci算法的原理與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • 我從jdk1.8升級(jí)到j(luò)dk11所遇到的坑都有這些

    我從jdk1.8升級(jí)到j(luò)dk11所遇到的坑都有這些

    這篇文章主要介紹了從jdk1.8升級(jí)到j(luò)dk11將會(huì)遇到的一些坑,本文給大家分享解決方案對(duì)大家的學(xué)習(xí)或工作具有參考借鑒價(jià)值,對(duì)jdk1.8升級(jí)到j(luò)dk11相關(guān)知識(shí)感興趣的朋友,快來(lái)看看吧
    2021-08-08
  • java md5工具類分享

    java md5工具類分享

    這篇文章主要介紹了java的md5工具類,需要的朋友可以參考下
    2014-02-02
  • 簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲

    簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲

    這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java微信公眾號(hào)推送模版消息的步驟示例詳解

    Java微信公眾號(hào)推送模版消息的步驟示例詳解

    模板消息是一種向用戶發(fā)送通知的服務(wù),廣泛用于訂單狀態(tài)更新、服務(wù)提醒等場(chǎng)景,下面,我將詳細(xì)介紹如何使用Java結(jié)合微信官方提供的API來(lái)實(shí)現(xiàn)模板消息的推送,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Spring Security學(xué)習(xí)之rememberMe自動(dòng)登錄的實(shí)現(xiàn)

    Spring Security學(xué)習(xí)之rememberMe自動(dòng)登錄的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于Spring Security學(xué)習(xí)之rememberMe自動(dòng)登錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 在Mac下IDEA安裝并使用protobuf方式(Java)

    在Mac下IDEA安裝并使用protobuf方式(Java)

    這篇文章主要介紹了在Mac下IDEA安裝并使用protobuf方式(Java),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

萝北县| 闽清县| 贺兰县| 沙坪坝区| 博兴县| 仁布县| 新巴尔虎右旗| 武冈市| 孟村| 准格尔旗| 和林格尔县| 鄄城县| 根河市| 津南区| 电白县| 荥阳市| 克拉玛依市| 江山市| 吴堡县| 伊川县| 通州区| 安仁县| 搜索| 揭西县| 合肥市| 平山县| 大足县| 塔河县| 三原县| 六安市| 恭城| 仁怀市| 曲阳县| 金坛市| 夏邑县| 历史| 昌图县| 宁南县| 富宁县| 阿拉善右旗| 萍乡市|