仅在运行时使用注释填充spring bean属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅在运行时使用注释填充spring bean属性相关的知识,希望对你有一定的参考价值。

我有一个bean父只有一个属性attr。

class Parent
{
   String attr;
   public void doStuff(){
      //stuff
   }
   public String getAttr() {
       return attr;
   }
   public void setAttr(String attr) {
       this.attr=attr;
   }
}

我有三个bean来扩展这个Parent bean。我的spring.xml看起来像这样 -

<bean id="parent" class="Parent"/>

<bean id="child1" parent="parent">
    <property name="attr" value="Sample value 1"/>
</bean>

<bean id="child2" parent="parent">
    <property name="attr" value="Sample value 2"/>
</bean>

<bean id="child3" parent="parent">
    <property name="attr" value="Sample value 3"/>
</bean>

我想用注释做同样的事情。问题是我必须做这个店面,我的控制器中的所有bean都被声明为 -

@Resource
@Qualifier("child1")
Parent child1;

有没有办法可以使用注释或控制器中的任何其他方法将属性添加到子bean,即不使用spring.xml?

有没有办法使用@Value注释执行此操作。问题是我没有来自属性文件的静态值。我对3种不同的豆子有3种不同的价值。

答案

如果属性文件中有三个不同的值,则不应该这样做

see post here

@Value(“${child1.attr}”) @Value(“${child2.attr}”) @Value(“${child3.attr}”)

以上是关于仅在运行时使用注释填充spring bean属性的主要内容,如果未能解决你的问题,请参考以下文章

仅在使用基于 Spring java 的配置运行测试时初始化数据库

spring装配集合

如何将属性值注入使用注释配置的 Spring Bean?

Spring IOC 容器源码分析 - 填充属性到 bean 原始对象

在Spring Bean实例过程中,如何使用反射和递归处理的Bean属性填充?

[Spring实战系列]装配集合