在 Spring-Cloud-Netflix (Brixton.RELEASE) 中为 AWS 配置 EurekaInstanceConfigBean

Configuring the EurekaInstanceConfigBean for AWS in Spring-Cloud-Netflix (Brixton.RELEASE)

随着 Brixton Release Train 的发布,我注意到对 EurekaInstanceConfigBean 界面进行了更新,具体来说,默认构造函数已经创建 private,并且有一个新的构造函数已经引入了一个 org.springframework.cloud.commons.util.InetUtils.

的实例

使用 Angel Release Train,许多在线示例 (cloud.spring.io included) 表明在 AWS 中工作时此 bean 的配置类似于以下内容:

@Bean
@Profile("!default")
public EurekaInstanceConfigBean eurekaInstanceConfig() {
    EurekaInstanceConfigBean b = new EurekaInstanceConfigBean();
    AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
    b.setDataCenterInfo(info);
    return b;
}

我知道我可以通过创建 InetUtils 的实例并将其提供给构造函数来实现它,但我对 最佳实践 创建此 @Bean 并将其配置为与 AWS 一起使用。

是否打算仅创建 InetUtils 的实例,或利用自动配置,或特定的 @Enable* 注释,甚至只是在 @PostConstruct 方法中设置字段?也许还有别的东西?

InetUtils是一个bean,直接注入即可。

public EurekaInstanceConfigBean eurekaInstanceConfig(InetUtils inetUtils) {
    EurekaInstanceConfigBean b = new EurekaInstanceConfigBean(inetUtils);
    //...
    return b;
}

bean 来自 AutoConfiguration,特别是 org.springframework.cloud.commons.util.UtilAutoConfiguration class,它是 spring-cloud-commons jar 的一部分。