首页 > 解决方案 > 注释值在 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);

}

}

标签: spring-bootproperties-file

解决方案


你可以这样使用

@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;
}


推荐阅读