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

基于spring同名bean覆蓋問題的解決

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

spring同名bean覆蓋問題

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

分為兩種情況處理

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

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

在配置文件很多時,如果在啟動時,對于同名的bean加載沒有異常信息,出現(xiàn)問題后會比較難以定位。

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

還好,spring有辦法對改屬性賦值。

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

案例如下

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)聽器</description>
  <listener-class>com.***.trade.system.web.util.TradeContextLoaderListener</listener-class>
 </listener>

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

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

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

抽象基類

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

兩個實(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";
 } 
}

另外一個抽象基類

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的配置文件只需要添加一個包<context:component-scan/>標(biāo)簽就行了

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

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了Java開發(fā)者結(jié)合Node.js編程入門教程,我將先向您展示如何使用Java EE創(chuàng)建一個簡單的Rest服務(wù)來讀取 MongoDB數(shù)據(jù)庫。然后我會用node.js來實(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)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 我從jdk1.8升級到j(luò)dk11所遇到的坑都有這些

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

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

    java md5工具類分享

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

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

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

    Java微信公眾號推送模版消息的步驟示例詳解

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

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

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

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

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

最新評論

普兰店市| 武定县| 莒南县| 盘锦市| 遂昌县| 奉新县| 中江县| 渑池县| 佳木斯市| 长海县| 香港 | 莆田市| 临邑县| 襄垣县| 旬阳县| 武功县| 韶山市| 互助| 衡南县| 伊金霍洛旗| 台东县| 丹凤县| 安庆市| 长顺县| 泰来县| 绵竹市| 崇文区| 南溪县| 香港 | 德保县| 天气| 微山县| 南投市| 化州市| 昌都县| 元氏县| 南安市| 水富县| 唐海县| 涞源县| 台江县|