Spring Boot无法从application.yml获取配置

时间:2018-12-18 23:58:18

标签: spring spring-boot

我的Spring Boot应用程序无法从application.yml文件获取配置参数。我的主要课程如下:

@SpringBootApplication(scanBasePackages={"com.test"})
public class Main {
    @Bean
    public Validator validator(){
        return new  org.springframework.validation.beanvalidation.CustomValidatorBean();
    }
    public static void main(String[] args) throws IOException {
        new SpringApplicationBuilder(Main.class)
        .properties("application.yml")
        .build()
        .run(args);
    }
}

我的控制器类如下:

@RestController
@RequestMapping("/test_traffic")
@Component
public class AnycastTrafficController {
    @Autowired
    TestService testService;

    @GetMapping("/test")
    public Object component() {
         return testService.getTraffic();
    }
}

我的服务类别如下:

@Service
public class TestService {
    @Autowired
    TestDao testDao;

    public Object getTraffic() {
        testDao.getTraff();
    }
}

我的道课如下:

@Component
public class TestDao {

    @Autowired
    MyDBConfig mydbConfig;

    public DB getMyDBConfig () {
        DB db = new DB(mydbConfig.id, mydbConfig.key);
        return db;
    }
}

我的Config类如下:

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "mydb")
public class MyDBConfig {

    public String id;
    public String key;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getKey() {
        return key;
    }
    public void setKey(String key) {
        this.key = key;
    }
}

我的application.yml(位于/ src / main / resources)如下:

server:
  port: 8003
  context-path: /

logging:
  level:
    ROOT: INFO
    org.springframework: INFO
    org.springframework.data: INFO
    com.alibaba: INFO
  file: log/

docserver:
  accessKeyId: 1111
  accessKeySecret: 2222

---

spring:
  profiles: dev
  application:
    name: test-application
mydb:
  id: 1111111
  key: 2222222

但是当我启动Main类并请求url时,它引发了如下异常:

the id should not be empty.

这意味着我的Configuration类没有从yml文件中获取配置数据,所以我在哪里做错了。 p.s(但应用程序可以找到服务器端口8003)。谢谢!

1 个答案:

答案 0 :(得分:1)

您的application.yml包含无效的属性选项。

代替

spring:
  profiles: dev

您应该使用

spring:
  profiles:
    active: dev

更正此问题后,配置处理器应该可以正常工作。