使用java @Configuration类定义别名

时间:2015-02-22 15:51:41

标签: java spring

我正试图在@Configuration类中模仿Spring XML别名的行为。

我在XML中有一个看起来像这样的别名:

<alias name="${com.some.bean}" alias="myBean"/>

我有一个看起来像这样的@Configuration类:

@Configuration
public class MyConfig {
   @Lazy
   @Bean(name = "bean1")
   public MyBean bean1() { return new MyBean(); }

   @Lazy
   @Bean(name = "bean2")
   public MyBean bean2() { return new MyBean(); }
}

我想动态加载bean1bean2,并为加载别名myBean的人加载。根据{{​​1}}财产的决议。使用XML很容易,但我找不到com.some.bean等价物。

注意:我不想使用配置文件,因为这不是我的系统当前的工作方式,并且目前无法更改所有属性解析以使用配置文件而不是属性文件。

1 个答案:

答案 0 :(得分:2)

一个丑陋的解决方法是定义一个@Bean,它将属性值作为@Value接收并自行执行解析

@Bean("myBean")
public MyBean myBean(@Value("${com.some.bean}") String value) {
    if (value.equals("bean1"))
        return bean1();
    else if (value.equals("bean2"))
        return bean2();
    else {
        throw new RuntimeException("nope, something went wrong");
    }
}