当前位置: 首页 > 面试题库 >

如何在Spring中动态设置bean引用?

屠德宇
2023-03-14
问题内容
<bean id="Mybean" class="Bean">   
  <property name="config" ref="dev"/>   
</bean>

<bean id="dev" class="Dev">
  <property name="x" ref="Dev1">
  <property name="y" ref="Dev2">
  <property name="z" ref="Dev3">
</bean>

<bean id="stag" class="Dev">
  <property name="x" ref="Stag1">
  <property name="y" ref="Stag2">
  <property name="z" ref="Stag3">
</bean>

在上述情况下,configbean中的属性MyBean随环境而变化。在开发时,config的引用更改为dev。并在阶段中将参考更改为stag。问题在检入spring文件时出现。每次签入之前,我们都必须分析config的引用。如果config的引用具有dev签入的值,我们可能必须解释很多问题。

有什么解决方案可以使其自动化?
注意:春季版本为2.0.1


问题答案:

使用Spring的PropertyPlaceholderConfigurer,并删除未使用的bean:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
         <value>env.properties</value>
     </property>
</bean>

<bean id="Mybean" class="Bean">   
  <property name="config" ref="config"/>   
</bean>

<bean id="config" class="Config">
  <property name="x" ref="${x}">
  <property name="y" ref="${y}">
  <property name="z" ref="${z}">
</bean>

并且env.properties文件包含以下属性:

x=Dev1
y=Dev2
z=Dev3

要么

x=Stag1
y=Stag2
z=Stag3


 类似资料:
  • 我使用AWS ECS来托管我的应用程序,并使用DynamoDB进行所有数据库操作。因此,我将为不同的环境使用相同的数据库和不同的表名。如dev_users(Dev env)、test_users(Test env)等。(这是我们公司如何在不同环境下使用相同的Dynamo帐户) 因此,我想使用通过“AWS ECS任务定义”环境参数传递的环境变量更改模型类的“tableName”。 例如 我的模型类是

  • 总体: 我试图为一个特定的spring配置文件运行gradle build任务,但在通过以下测试时出现了一个错误: 注意:我对生成尝试了相同的方法,但生成任务不存在build.SystemProperty方法。 因为我是新来的,如果你能和我分享你真正的解决方案,我会很感激。

  • 问题内容: 我想将String放入比给定单元格宽度更长的字符串中。如何动态设置,以便可以读取整个String?这是一个例子: 在这里,您将看到将给定单元格较长的每个文本换行的代码 谢谢,但是我想根据字符串的长度动态地实现RowHeight。我想读取单元格中的整个字符串/文本。有什么建议? 我是Java初学者,这是我的第一个问题。我很高兴得到答案。 问题答案: 使用JTextArea作为呈现组件时会

  • 我有一个使用spring-rabbit的Spring(引导)应用程序,我根据需要创建绑定bean,如下所示: 我遇到的问题是,每3个bean只有两条信息,队列名和交换名。 有没有一种方法可以将任意数量的bean添加到上下文中,而不是复制和粘贴一堆方法?我想要类似于“对于这个列表中的每个名字,添加这三个连接的bean。”

  • 本文向大家介绍如何在Spring中使用编码方式动态配置Bean详解,包括了如何在Spring中使用编码方式动态配置Bean详解的使用技巧和注意事项,需要的朋友参考一下 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载、实例化Bean,并建立Bean和Bean的依赖关系

  • 还有一个Java问题(我是noob,我知道):在自定义控件中使用动态属性绑定,在JavaBean中使用动态属性getter,可能吗? 我会解释的。我在自定义控件中广泛使用此功能: 这用于将数据源和字段名称作为参数传递的控件中。这工作,到目前为止还不错。现在,在某些情况下,数据源是托管bean。当解释上述行时,显然会生成代码来获取或设置...某物的值。但具体是什么呢? 我得到这个错误:从com类型的