关于
有时候,随着业务的发展,项目关联的数据来源会变得越来越复杂,使用的数据库会比较分散,这个时候就会采用多数据源的方式来获取数据。另外,多数据源也有其他好处,例如分布式数据库的读写分离,集成多种数据库等等。下面分享我在实际项目中配置多数据源的案例。
步骤
1.application.yml文件中,配置数据库源。这里primary是主库,secondary是从库。
1 | server: |
2.创建一个Spring配置类,其中spring.primary.datasource的路径参考yml文件的配置。
1 | @Configuration |
3.分别创建主库、从库的配置类。
注意:entity包和dao包的配置,以及@Primary注解指定主库。
主库配置类:
1 | @Configuration |
从库的配置类:
1 | @Configuration |
4.分别创建主、从库dao类。
主dao:
1 | @Repository |
从dao:
1 | @Repository |
5.分别创建主、从库entity类。
主entity:
1 | @Entity |
从entity:
1 | @Entity |
6.controller请求获取不同数据库的数据。
1 | @RestController |
注意
下面提两个在配置多数据源时遇到的坑点,一不注意就掉坑了。
1.Application类不需要配置@EnableJpaRepositories注解,会报如下错误。
1 | A component required a bean named 'entityManagerFactory' that could not be f |
2.注意检查dao类,获取数据的方法上格式是否正确,有没有某个字段是表中不存在的,避免启动异常。如下,SecondaryEntity表中是不存在job_name字段的,所以注释掉才能启动成功等。
1 | //@Query(value = "SELECT p FROM SecondaryEntity p where p.job_name = ?1") |
v1.5.2