我已经阅读了springdatajpa参考文档,以在spring boot中配置数据源,并使用localcontainerentitymanagerfactorbean和transactionmanager..等,但运行时出错
但是我想配置一个mysql的数据源,一个数据源。这是配置类代码:
@Configuration
@EnableJpaRepositories
@EnableTransactionManagement
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix="oneslide.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter vendor=new HibernateJpaVendorAdapter();
vendor.setGenerateDdl(true);
LocalContainerEntityManagerFactoryBean factory=new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendor);
factory.setPackagesToScan("com.oneslide.multiDataSource.domain");
factory.setDataSource(dataSource());
return factory;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager=new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
}
我不想要用户 DatasourceBuilder.create.url().password()..
类似这样的链式调用,我只想将application.properties中的sql连接元数据与oneslide.datasource namespce.合并,并尝试使用localcontainerentitymanagerfactory bean,而不是使用教程中使用spring.datasource.*属性的方式。但当我运行它时,datasource debug info为null,它是异常日志的摘要:
调用init方法失败;嵌套异常为org.hibernate.service.spi.serviceexception:无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.jdbcenvironment]
:未设置“hibernate.dialect”时,对方言解析信息的访问不能为空
帮帮我谢谢。
2条答案
按热度按时间yqkkidmi1#
你的注解
@ConfigurationProperties(prefix="oneslide.datasource")
请求sprint从外部配置获取信息,并将其与正在注解的bean绑定,即方法生成的结果。但是带注解的bean必须具有接收配置值的属性。i、 它必须有字段和内部对象来复制您正在传递的配置(以及setter)的结构。
例如,如果您的配置包含以下内容:
您构建的bean应该有字段“url”、“user”和“password”,以及带有字段“detail”的对象“special”,这样spring就可以设置这些值。简化某事
Y = X.getSpecial(); Y.setDetail()
(对于空识别和对象创建,我想也要记住)。如果你什么都不做。。。幕后的spring将创建一个datasourcepropertybean(毫不奇怪,它包含了通常用于在“spring.datasource”下用config info设置数据源的字段)。
您可以通过定义自己的bean来获取这个bean,该bean将它作为一个参数,如下所示:
在本例中,最常见的操作是自己构建数据源,除了从配置中分配值之外,还有一些逻辑。
如果您不需要做任何特殊的事情,那么也让spring来构建数据源。
坐下来好好享受吧!:)
c90pui9n2#
我完全误解了SpringBoot,也许…..它会自动配置所有bean,比如localcontainerentitymanagerfactorybean!所以要使用多数据源,我只需要配置一个数据源,对吧???