首页 > 解决方案 > 如何在 Spring Boot 中的 DatabaseConfig 中设置属性

问题描述

在我在 application.properties 中进行配置之前。但现在它似乎什么也没做,所以我想我需要在 conf 类中设置它们。

所有示例和教程似乎只是将 setProperties 设置为 LocalContaierEntityManagerFactoryBean 但这里没有这样的选项,或者我不知道如何......

 @Configuration
 @EnableTransactionManagement
 @EnableJpaRepositories(
    entityManagerFactoryRef = "entityManagerFactory",
    basePackages = "com.xxxx.xxxxx.database.local.repository"
 )
public class LocalDatabaseConfig {

@Bean(name = "localDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource localDataSource() {
    return DataSourceBuilder.create().build();

}
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean
        entityManagerFactory(EntityManagerFactoryBuilder builder, @Qualifier("localDataSource") DataSource localDataSource) {
    return builder.dataSource(localDataSource)
            .packages("com.xxxx.xxxxx.database.local.model")
            .persistenceUnit("local")
            .build();
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory")EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
}

Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.hbm2ddl.auto", "update");
    properties.setProperty(
            "hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");

    return properties;
}

}

我有方法 additionalProperties,但无法确定如何在此处的任何对象上设置属性。

标签: databasehibernatespring-boot

解决方案


一种更简洁的方法是将所有这些配置放在 application.properties 文件中。在 中创建一个名为application.properties的文件/src/main/resources。Spring 自动将其检测为配置文件并加载所有需要的属性。例如。-

Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)

spring.datasource.url = jdbc:mysql://localhost:3306/notes_app?useSSL=false
spring.datasource.username = root
spring.datasource.password = root


## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

对于多个数据源,请使用以下配置 -

#first db
spring.datasource.url = [url]
spring.datasource.username = [username]
spring.datasource.password = [password]
spring.datasource.driverClassName = oracle.jdbc.OracleDriver

#second db ...
spring.secondDatasource.url = [url]
spring.secondDatasource.username = [username]
spring.secondDatasource.password = [password]
spring.secondDatasource.driverClassName = oracle.jdbc.OracleDriver


@Bean
@Primary
@ConfigurationProperties(prefix="spring.firstDatasource")
public DataSource primaryDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean
@ConfigurationProperties(prefix="spring.secondDatasource")
public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
}

对于多个数据源,您可以使用带有前缀字符串的@ConfigurationProperties 注释来标识您的数据源。


推荐阅读