我的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)。谢谢!
答案 0 :(得分:1)
您的application.yml包含无效的属性选项。
代替
spring:
profiles: dev
您应该使用
spring:
profiles:
active: dev
更正此问题后,配置处理器应该可以正常工作。