application.properites
spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/blue?serverTimezone=UTC #spring.datasource.url = jdbc:mysql://localhost:3306/blue?serverTimezone=UTC spring.datasource.username = root spring.datasource.password = root spring.datasource.driverClassName = com.mysql.jdbc.Driver red.datasource.jdbc-url = jdbc:mysql://localhost:3306/red?serverTimezone=UTC #red.datasource.url = jdbc:mysql://localhost:3306/red?serverTimezone=UTC red.datasource.username = root red.datasource.password = root red.datasource.driverClassName = com.mysql.jdbc.Driver #----------------------JPA------------------------------ # Specify the DBMS spring.jpa.database = MYSQL # Show or not log for each sql query spring.jpa.show-sql = true # Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto = update # Naming strategy ##spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultNamingStrategy spring.jpa.generate-ddl=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect |
spring.datasource.jdbc-url, spring.datasource.url 以往使用url没有任何问题,通过配置引入后,提示需要jdbc-url,尝试后应用启动正常。入坑须清醒。
@ComponentScan(basePackages = { "controller", "service"/* ,"repository","pojo" */ }) //@EnableJpaRepositories(basePackages = "repository", entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager") @EnableJpaRepositories(basePackages = "repository", entityManagerFactoryRef = "entityManagerFactoryRed", transactionManagerRef = "transactionManagerRed") @EntityScan("pojo") @Configuration @EnableTransactionManagement public class MutiDataSourceCfg { @Autowired private Environment env; @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); } @Bean public DataSource dataSourcex() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(env.getProperty("spring.datasource.driverClassName")); dataSource.setUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username")); dataSource.setPassword(env.getProperty("spring.datasource.password")); return dataSource; } @Bean @ConfigurationProperties(prefix = "red.datasource") public DataSource dataSourceRed() { return DataSourceBuilder.create().build(); } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { // builder.dataSource(getDataSource()).properties(null) LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); DataSource ds=dataSource(); entityManagerFactoryBean.setDataSource(ds); entityManagerFactoryBean.setPackagesToScan("pojo"); JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter); entityManagerFactoryBean.setJpaProperties(getProperties()); return entityManagerFactoryBean; } public Properties getProperties() { Properties properties = new Properties(); properties.setProperty("hibernate.dialect", env.getProperty("spring.jpa.properties.hibernate.dialect")); properties.setProperty("hibernate.show_sql", env.getProperty("spring.jpa.show-sql")); properties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("spring.jpa.hibernate.ddl-auto")); properties.setProperty("spring.jpa.generate-ddl", env.getProperty("spring.jpa.generate-ddl")); return properties; } @Bean public TransactionManager transactionManager( @Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory); transactionManager.setDataSource(dataSource()); return transactionManager; } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactoryRed() { LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); entityManagerFactoryBean.setDataSource(dataSourceRed()); entityManagerFactoryBean.setPackagesToScan("pojo"); JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter); entityManagerFactoryBean.setJpaProperties(getProperties()); return entityManagerFactoryBean; } @Bean public TransactionManager transactionManagerRed( @Qualifier("entityManagerFactoryRed") EntityManagerFactory entityManagerFactory) { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory); transactionManager.setDataSource(dataSourceRed()); return transactionManager; } } |