spring boot 1.3.3每个env创建多个resttemplate

时间:2017-03-05 03:20:00

标签: spring-boot

我在spring boot 1.3.3版本上,我有一个要求,我的spring启动应用程序需要根据env传递调用端点, 这意味着如果env作为Dev传递我将需要调用devendpoint, 如果env作为Dev1传递,则需要调用dev1endpoint,依此类推。 那我该怎么做呢? 我是否需要创建多个restTemplate实例? 我应该根据env传递动态构造resttemplate吗? 作为构建resttemplate的一部分,我还需要添加基于env选择的appllicable拦截器。 Plesae建议。

2 个答案:

答案 0 :(得分:0)

您可以有两个相同类的bean。可以将其中一个标记为主要对象,在@Autowired上使用它可以指定将哪个与@Qualifier一起使用。

示例:

@Configuration
public class MyConfig {
  @Bean
  @Primary
  public RestTemplate typicalConfig() {
    // various configs on your rest template
    return new RestTemplate();
  }

  @Bean
  public RestTemplate lessTypical() {
    // various alternate configurations
    return new RestTemplate();
  }
}

现在进入您的服务类别:

@Service
public class MyService {

  @Autowired
  RestTemplate typicalRestTemplate;

  @Autowired
  @Qualifier("lessTypical")
  private RestTemplate alternateRestTemplate;

  ...
}

答案 1 :(得分:-1)

如果我不理解你的问题,请纠正我。我知道您将拥有不同的环境,但是您将在运行时更改此端点取决于某些信息或其他什么,但是当您说必须为此创建多个restTemplate实例时,我不理解该部分环境,根据我在春季启动应用程序方面的经验,你不必做这样的事情,你只需要创建你的restTemplate配置bean。

@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}

然后在您的服务类上注入该对象,并随意执行任何操作。我建议您阅读以下关于restTempalte的文章,这可能会对您有所帮助http://www.baeldung.com/rest-template