11package ir .bigz .springbootreal .configuration ;
22
3- import com .zaxxer .hikari .HikariConfig ;
4- import com .zaxxer .hikari .HikariDataSource ;
53import org .springframework .beans .factory .annotation .Autowired ;
6- import org .springframework .boot .autoconfigure .jdbc .DataSourceProperties ;
7- import org .springframework .boot .context .properties .ConfigurationProperties ;
8- import org .springframework .boot .jdbc .DataSourceBuilder ;
4+ import org .springframework .beans .factory .annotation .Qualifier ;
95import org .springframework .context .annotation .Bean ;
106import org .springframework .context .annotation .Configuration ;
117import org .springframework .core .env .Environment ;
@@ -24,50 +20,16 @@ public class DataSourceConfiguration {
2420 @ Autowired
2521 private Environment env ;
2622
27- @ Bean
28- @ ConfigurationProperties (prefix = "demo.datasource" )
29- public DataSourceProperties dataSourceProperties () {
30- return new DataSourceProperties ();
31- }
32-
33-
34- @ Bean
35- public DataSource dataSource () {
36- DataSourceProperties dataSourceProperties = dataSourceProperties ();
37- // final HikariDataSource dataSource = new HikariDataSource();
38- // dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
39- // dataSource.setJdbcUrl(dataSourceProperties.getUrl());
40- // dataSource.setUsername(dataSourceProperties.getUsername());
41- // dataSource.setPassword(dataSourceProperties.getPassword());
42- // dataSource.setConnectionTimeout(Integer.parseInt(env.getProperty("spring.datasource.hikari.connectionTimeout")));
43- // dataSource.setMaximumPoolSize(Integer.parseInt(env.getProperty("spring.datasource.hikari.maximumPoolSize")));
44- // return dataSource;
45- return connectionPoolDataSource (DataSourceBuilder .create ()
46- .driverClassName (dataSourceProperties .getDriverClassName ())
47- .url (dataSourceProperties .getUrl ())
48- .username (dataSourceProperties .getUsername ())
49- .password (dataSourceProperties .getPassword ())
50- .build ());
51- }
52-
53- protected HikariConfig hikariConfig (DataSource dataSource ) {
54- HikariConfig hikariConfig = new HikariConfig ();
55- int cpuCores = Runtime .getRuntime ().availableProcessors ();
56- hikariConfig .setMaximumPoolSize (cpuCores * 4 );
57- hikariConfig .setDataSource (dataSource );
58- hikariConfig .setAutoCommit (false );
59- return hikariConfig ;
60- }
23+ private final DataSource dataSource ;
6124
62- protected HikariDataSource connectionPoolDataSource (
63- DataSource dataSource ) {
64- return new HikariDataSource (hikariConfig (dataSource ));
25+ public DataSourceConfiguration (@ Qualifier ("HikariDataSourceInit" ) DataSource dataSource ) {
26+ this .dataSource = dataSource ;
6527 }
6628
6729 @ Bean
6830 public LocalContainerEntityManagerFactoryBean entityManagerFactory () {
6931 LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean ();
70- factory .setDataSource (dataSource () );
32+ factory .setDataSource (dataSource );
7133 factory .setPackagesToScan (new String []{"ir.bigz.springbootreal.dao" });
7234 factory .setJpaVendorAdapter (new HibernateJpaVendorAdapter ());
7335
0 commit comments