单个JavaConfig类,用于具有依赖项的相同类型的多个bean

时间:2016-05-10 18:55:09

标签: java spring spring-java-config

是否可以将此配置转换为单个@Configuration类?我需要从属性文件中选择Car的值

<bean name="VW" class="com.app.car">
    <property name="cost" value="${vw.cost}"/>
    <property name="power" value="${vw.power}"/>
</bean>

<bean name="Merc" class="com.app.car">
    <property name="cost" value="${merc.cost}"/>
    <property name="power" value="${merc.power}"/>
</bean>

<bean name="FirstCar" class="com.app.cart">
    <property name="car" ref="VW"/>
</bean>

<bean name="SecondCar" class="com.app.cart">
    <property name="car" ref="Merc"/>
</bean>

我知道我们可以为VW和Marc定义不同的类,然后将@Autowire引用到父@Configuration类。想知道是否存在涉及在单个类中定义所有这些bean的解决方案。我尝试使用@Value作为devAppConfig的参数,如下所示

vw(@Value("vw.cost") String cost, @Value("vw.power") String power)

merc(@Value("merc.cost") String merc, @Value("merc.power") String power)

但这些方法有输入参数。有两个相同类型的不同对象需要使用不同的属性值进行实例化并作为依赖项注入才是目标

1 个答案:

答案 0 :(得分:1)

您可以使用Spring Profiles,因此您可以为每个环境提供属性文件o bean。

  

Spring Profiles提供了一种隔离应用程序部分的方法   配置并使其仅在某些环境中可用。任何   @Component或@Configuration可以用@Profile标记以限制何时   它已加载你可以在这里看到更多   http://www.baeldung.com/spring-profiles

http://www.mkyong.com/spring/spring-profiles-example/

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html