spring-boot - 注释值在 Spring Boot 中不起作用
问题描述
我想通过 @Value 注释从属性文件中读取几个值,但出现错误。
注入自动装配的依赖项失败;嵌套异常是java.lang.IllegalArgumentException: Could not resolve placeholder 'rcm.datasource.driverClassName' in value "${rcm.datasource.driverClassName}"
属性文件
rcm.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
java类
@Configuration
public class RcmDBConfig {
@Value("${rcm.datasource.driverClassName}")
private String driverClassName;
@Bean(name = "rcmEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean productEntityManager() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
System.out.println(driverClassName);
}
}
解决方案
你可以这样使用
@Configuration
public class MyDatabaseConfig {
@Bean(name = "myDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource myDataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
这是yml文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: ****
password: ***********
jdbc-url : jdbc:mysql://localhost:3306/myshema?autoReconnect=true&autoReconnectForPools=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
或者您只想读取 java 类中的 yml 或属性文件,就像这样
@Component
@ConfigurationProperties("spring.datasource")
@Getter
@Setter
public class SpringYMLData {
private String driver-class-name;
private String username;
private String password;
private String jdbc-url;
}
推荐阅读
- python-xarray - xarray concat中的空切片
- flutter - 为什么我的应用在调试模式和发布模式下看起来不一样 Flutter
- reactjs - React Typescript:反射(列出接口的属性)
- python - magpylib 包中的“collection”和“displaySystem”问题
- python - Python 类修改相同的变量并使用“对象”。
- html - 当一个大于另一个时如何使按钮居中?
- r - Seq 函数在 R 中出现多行错误
- android - Flutter 渲染过程是如何完成的?
- reactjs - 如何创建具有正确类型的反应组件映射
- .net - 该项目不是通过 dotnet build 构建的