database - 如何在 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,但无法确定如何在此处的任何对象上设置属性。
解决方案
一种更简洁的方法是将所有这些配置放在 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 注释来标识您的数据源。
推荐阅读
- laravel - 为什么游标分页不适用于 laravel 中的关系?
- python - 我想加载 Hiroki Taniai 的预训练 faecnet_keras.h5 模型,但得到了 ValueError
- c++11 - 什么样的引用应该在 C++ 中使用具有移动语义的 move() 成员函数?
- vba - 从其他模块调用全局配置变量的更好方法
- python - 熊猫数据框熊猫
- docker - Docker没有连接到端口
- java - 在模块 core-1.5.0-runtime 中找到重复的类 android.support.v4.app.INotificationSideChannel
- python - 使用熊猫在同一个图形上绘制多列
- javascript - 是否可以从用户那里获得突出显示的 html 内容?
- python - 如果我使用(cross_val_score),我可以单独知道训练和测试的准确性吗