为了账号安全,请及时绑定邮箱和手机立即绑定

spring boot:如何从应用程序属性配置数据源

spring boot:如何从应用程序属性配置数据源

蛊毒传说 2021-11-17 14:46:33
我想下面的代码值:DriverClassName,Url,Username,Password从读取application.properties文件,该怎么做?我正在使用 Spring Boot、Mysql、Hibernate 和 Spring Rest。数据源配置文件    //This is working fine with inline value specified as below (DriverClassName, Url,Username,Password    @Configuration    @EnableTransactionManagement    @EnableJpaRepositories(basePackages = "com.nouhoun.springboot.jwt.integration.repository")    public class DatasourceConfig {        @Bean        public DataSource datasource() throws PropertyVetoException {               final DriverManagerDataSource dataSource = new DriverManagerDataSource();               dataSource.setDriverClassName("com.mysql.jdbc.Driver");               dataSource.setUrl("jdbc:mysql://localhost:3306/fdb?createDatabaseIfNotExist=true");               dataSource.setUsername("root");               dataSource.setPassword("");               return dataSource;    }   ....   ....   ....
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

一旦你定义数据源属性application.properties中@SpringBootApplication它会自动配置datasource,这样你就可以删除DataSource configuration。但是如果你想自定义你的数据源配置,那么下面应该Environment可以让你访问属性:


@Configuration

@PropertySource(value= {"classpath:application.properties"})

public class DatasourceConfig {


    @Autowired

    Environment environment;


    @Bean

    public DataSource datasource() throws PropertyVetoException {

        final DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));

        dataSource.setUrl(environment.getProperty("spring.datasource.url"));

        dataSource.setUsername(environment.getProperty("spring.datasource.username"));

        dataSource.setPassword(environment.getProperty("spring.datasource.password"));

        return dataSource;

    }

}

或者,如果您不想通过 访问属性Environment,则可以通过访问@Value


  @Value("${spring.datasource.driver-class-name}")

    private String driverName;


    @Value("${spring.datasource.url}")

    private String url;


    @Value("${spring.datasource.username}")

    private String userName;


    @Value("${spring.datasource.password}")

    private String password;


    @Bean

    public DataSource datasource() throws PropertyVetoException {

        final DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(driverName);

        dataSource.setUrl(url);

        dataSource.setUsername(userName);

        dataSource.setPassword(password);

        return dataSource;

    }


查看完整回答
反对 回复 2021-11-17
?
浮云间

TA贡献1829条经验 获得超4个赞

似乎您忘记在 pom.xml 或 build.gradle 中添加依赖项,或者如果您已经添加,则您的构建没有该依赖项(运行mvn clean install)


<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>6.0.6</version>

</dependency>

请添加并重试


查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信