相关疑难解决方法(0)

春天的压倒一切的豆子

我们可以为XML中提到的相同bean id重复名称吗?如果没有,那么我们如何在Spring中覆盖bean呢?

spring

35
推荐指数
5
解决办法
9万
查看次数

覆盖子上下文中父上下文中定义的bean

我们的应用程序需要支持多租户.每个登机客户都可能会覆盖一个或多个bean或核心平台级别定义的bean的某些属性(公共代码/定义).我想知道处理这个问题的最佳方法是什么.

architecture spring java-ee multi-tenant

22
推荐指数
1
解决办法
2万
查看次数

在春天覆盖bean配置

假设我有两个模块.一个是核心,另一个是核心相关实现模块.Core是该依赖实现模块之战的jar文件.

在核心我有一个定义的bean

<bean id="x" class="com.pokuri.X">
 <property name="y" ref="y"/>
 <property name="z" ref="z"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

那个类的方法如下

public class X{

  public void doSomeJob(){
   .......
  }   

}
Run Code Online (Sandbox Code Playgroud)

从一些核心类调用此方法.现在我需要根据我的核心依赖实现来改变X的doSomeJob()方法中的逻辑.所以,我创建了一个这样的类

public class ExtX extends X{

  @override
  public void doSomeJob(){
    // changed logic
  }

}
Run Code Online (Sandbox Code Playgroud)

并在另一个应用程序上下文xml文件中定义了具有相同id的bean.

<bean id="x" class="com.pokuri.ExtX">
     <property name="y" ref="y"/>
     <property name="z" ref="z"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

我们正在使用contextConfigLocation上下文参数构建应用程序上下文,web.xml将值指定为classpath:springfolder.

但在核心逻辑中,我只获得了核心bean实例(即X实例)ExtX.我们如何覆盖该bean定义并让系统开始使用新的扩展bean定义?

我听说在不同的应用程序上下文文件中使用相同的ID将覆盖第一个加载的bean定义以及后来加载的bean定义.priority当找到具有相同ID的bean时,是否有任何类型的bean定义属性让ApplicationContext使用最高优先级的属性来考虑低优先级的属性.

spring inversion-of-control

9
推荐指数
1
解决办法
4万
查看次数