首页 > 解决方案 > 在 Spring Boot 中加载外部库的配置

问题描述

我有一个弹簧启动应用程序(微服务)。我必须在此服务中使用外部库。

外部库如下:

public class ExternalConfig {
   private String config1;
   private boolean config2;
}

public class ExternalService {
   private ExternalConfig config;
   public ExternalService(ExternalConfig config) {
      this.config = config;
   }

   public void performSomeAction() {

   }
}

现在,这个库没有用任何 spring 注释进行注释。在我的spring应用程序中,我有一个配置和用法如下:

public class Config {
   @Value("${abc.config1}")
   private String config1;

   @Value("${abc.config2}")
   private String config2;

   // How do I load the config from the application.properties.
   private ExternalConfig externalConfig;

}

@Service
@ComponentScan
public class ExternalLibraryService {
    private ExternalService externalService;

    public ExternalLibraryService(ExternalConfig config) {
       externalService = new ExternalService(config);
    }
    public void doSomething() {
        .
        .
        externalService.performSomeAction();
        .
        .
    }
}

我的 application.properties 如下:

# ABC Config
abc.config1=value1
abc.config2=value2

# External Config
external.config1=exvalue1
external.config2=true

现在如何将配置加载到外部库?一种可能的方法是使用我的 spring 应用程序扩展ExternalConfig并加载它。我想知道spring boot中是否有办法加载这些。

标签: javaspringspring-bootapplication.properties

解决方案


您可以创建一个ExternalConfig作为弹簧豆。

像这样的东西

@Bean
public ExternalConfig externalConfig(@Value("${external.config1}") String config1, 
                                     @Value("${external.config2}") boolean config2) {
return new ExternalConfig(config1, config2);
}

推荐阅读