spring boot 无法从 application.yml 获取配置
Posted
技术标签:
【中文标题】spring boot 无法从 application.yml 获取配置【英文标题】:spring boot can not get configuration from application.yml 【发布时间】:2019-05-19 10:45:13 【问题描述】:我的 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;
我的配置类如下:
@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.
这意味着我的配置类没有从 yml 文件中获取配置数据,所以请问我哪里做错了。 p.s(但应用程序可以找到服务器端口 8003)。谢谢!
【问题讨论】:
application.yml
文件在哪里?如果它在资源目录(src/main/resources)中,spring boot 应该会自动找到它,而不必指定它。
是的,它位于/src/main/resources,可以找到服务器8003端口,但是无法读取mydb数据。
当我评论你在应用程序中的所有内容并且我只保留 mydb 和子属性时它可以工作!
您是否在设置活动配置文件?如果没有,Spring 将不会默认为 dev
并将忽略该部分 ***.com/questions/37700352/…
【参考方案1】:
您的 application.yml 包含无效的属性选项。
代替
spring:
profiles: dev
你应该使用
spring:
profiles:
active: dev
更正此问题后,配置处理器应该可以正常工作。
【讨论】:
另外 server.context-path 已被标记为已弃用,请改用 server.servlet.context-path。以上是关于spring boot 无法从 application.yml 获取配置的主要内容,如果未能解决你的问题,请参考以下文章
Intellij spring boot 应用程序无法从 tomcat 运行
Spring Boot 无法从 Spring Cloud AWS Core 依赖项启动
spring boot 无法从 application.yml 获取配置
当我将 Spring Boot 应用程序部署到 AWS Elastic Beanstalk 并且无法从本地 Spring Boot 连接到 RDS 时出现 502 错误网关