首页 > 解决方案 > 在自定义启动器中访问 spring 应用程序名称

问题描述

我试图在自定义启动器自动配置中访问 spring 应用程序名称。

@Configuration
public class CustomAutoConfiguration {

    @Value("${spring.application.name}")
    private String appName;

}

spring.factories 作为,

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
co.test.CustomAutoConfiguration

在使用此自定义启动器的应用程序中,我已在bootstrap.yaml

spring:
  application:
    name: test-app

但是,我看到 appName 是null. 我的猜测是这与加载顺序有关吗?无论如何要做到这一点?

标签: javaspringspring-boot

解决方案


我过去有类似的问题,我通过自动装配解决了org.springframework.core.env.Environment;像这样的东西:

@Configuration
public class CustomAutoConfiguration {
    @Autowired
    private Evinronment env;
    private String appName;
    @PostConstruct
    public void initialize(){
       this.appName = env.getProperty("spring.application.name");
    }

}

未经测试,但它应该可以工作

安杰洛


推荐阅读