Skip to content

Commit 0859630

Browse files
committed
refactoring
1 parent 91b85b9 commit 0859630

File tree

9 files changed

+40
-33
lines changed

9 files changed

+40
-33
lines changed

src/main/java/org/springframework/samples/petclinic/clinicactivity/ClinicActivityController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
@RestController
2525
@RequestMapping("/api/clinic-activity")
26-
@Profile("postgres")
26+
@Profile({"postgres", "mysql"})
2727
public class ClinicActivityController implements InitializingBean {
2828

2929
private static final Logger logger = LoggerFactory.getLogger(ClinicActivityController.class);

src/main/java/org/springframework/samples/petclinic/clinicactivity/ClinicActivityDataService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import java.util.HashMap;
3737

3838
@Service
39-
@Profile("postgres")
39+
@Profile({"postgres", "mysql"})
4040
public class ClinicActivityDataService {
4141

4242
private static final Logger logger = LoggerFactory.getLogger(ClinicActivityDataService.class);

src/main/java/org/springframework/samples/petclinic/config/DatabaseConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,25 @@ public class DatabaseConfig {
1919
@Primary
2020
@Bean(name = "postgresDataSource")
2121
@ConfigurationProperties("app.datasource.postgres")
22-
@Profile("postgres")
2322
public DataSource postgresDataSource() {
2423
return DataSourceBuilder.create().type(HikariDataSource.class).build();
2524
}
2625

2726
@Bean(name = "mysqlDataSource")
2827
@ConfigurationProperties("app.datasource.mysql")
28+
@Profile("mysql")
2929
public DataSource mysqlDataSource() {
3030
return DataSourceBuilder.create().type(HikariDataSource.class).build();
3131
}
3232

3333
@Primary
3434
@Bean(name = "postgresJdbcTemplate")
35-
@Profile("postgres")
3635
public JdbcTemplate postgresJdbcTemplate(@Qualifier("postgresDataSource") DataSource dataSource) {
3736
return new JdbcTemplate(dataSource);
3837
}
3938

4039
@Bean(name = "mysqlJdbcTemplate")
40+
@Profile("mysql")
4141
public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {
4242
return new JdbcTemplate(dataSource);
4343
}

src/main/java/org/springframework/samples/petclinic/config/MySqlConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
transactionManagerRef = "mysqlTransactionManager",
2424
basePackages = {"org.springframework.samples.petclinic.patientrecords"}
2525
)
26-
@Profile({"postgres", "mysql"})
26+
@Profile("mysql")
2727
public class MySqlConfig {
2828

2929
@Bean(name = "mysqlEntityManagerFactory")

src/main/java/org/springframework/samples/petclinic/config/PostgresConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"org.springframework.samples.petclinic.clinicactivity"
2929
}
3030
)
31-
@Profile("postgres")
31+
@Profile({"postgres", "mysql"})
3232
public class PostgresConfig {
3333

3434
@Primary

src/main/java/org/springframework/samples/petclinic/patientrecords/PatientRecordController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
@RestController
2424
@RequestMapping("/api/patient-records")
25-
@Profile({"postgres", "mysql"})
25+
@Profile("mysql")
2626
public class PatientRecordController implements InitializingBean {
2727

2828
private static final Logger logger = LoggerFactory.getLogger(PatientRecordController.class);

src/main/java/org/springframework/samples/petclinic/patientrecords/PatientRecordDataService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import java.util.concurrent.TimeUnit;
2525

2626
@Service
27-
@Profile({"postgres", "mysql"})
27+
@Profile("mysql")
2828
public class PatientRecordDataService {
2929

3030
private static final Logger logger = LoggerFactory.getLogger(PatientRecordDataService.class);

src/main/java/org/springframework/samples/petclinic/patientrecords/PatientRecordUiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
@Controller
1313
@RequestMapping("/patient-records")
14-
@Profile({"postgres", "mysql"})
14+
@Profile("mysql")
1515
public class PatientRecordUiController {
1616

1717
private final JdbcTemplate mysqlJdbcTemplate;
Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,33 @@
1-
database=h2
2-
3-
# MySQL Configuration for Patient Records ONLY
4-
# This profile enables MySQL ONLY for patient records
5-
# Main petclinic data (owners, pets, visits, vets) uses H2 database
6-
7-
# Primary DataSource - H2 (Main PetClinic Data)
8-
# H2 handles all petclinic functionality when using MySQL profile
9-
# spring.datasource settings are inherited from default application.properties
1+
database=postgres
2+
3+
# Multi-Database Configuration - PostgreSQL + MySQL
4+
# This is the ONLY profile that enables both databases
5+
# PostgreSQL: Main petclinic data (owners, pets, visits, vets) + clinic activity
6+
# MySQL: Patient records ONLY (separate medical records system)
7+
8+
# Primary DataSource - PostgreSQL (Main PetClinic Data + Clinic Activity)
9+
app.datasource.postgres.jdbcUrl=jdbc:postgresql://localhost:5442/petclinic
10+
app.datasource.postgres.username=${POSTGRES_USER:postgres}
11+
app.datasource.postgres.password=${POSTGRES_PASS:postgres}
12+
app.datasource.postgres.driverClassName=org.postgresql.Driver
13+
app.datasource.postgres.maximumPoolSize=20
14+
app.datasource.postgres.minimumIdle=5
15+
app.datasource.postgres.connectionTimeout=20000
16+
app.datasource.postgres.idleTimeout=300000
17+
app.datasource.postgres.maxLifetime=1200000
1018

1119
# Secondary DataSource - MySQL (Patient Records ONLY)
12-
app.datasource.mysql.jdbc-url=${MYSQL_URL:jdbc:mysql://localhost:3306/patient_records}
20+
app.datasource.mysql.jdbcUrl=${MYSQL_URL:jdbc:mysql://localhost:3306/patient_records}
1321
app.datasource.mysql.username=${MYSQL_USER:patient_user}
1422
app.datasource.mysql.password=${MYSQL_PASS:patient_pass}
15-
app.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
16-
17-
# Connection Pool Settings for MySQL (Patient Records)
18-
app.datasource.mysql.maximum-pool-size=10
19-
app.datasource.mysql.minimum-idle=2
20-
app.datasource.mysql.connection-timeout=20000
21-
app.datasource.mysql.idle-timeout=300000
22-
app.datasource.mysql.max-lifetime=1200000
23-
24-
# Schema and Data Initialization - H2 ONLY (Main PetClinic)
23+
app.datasource.mysql.driverClassName=com.mysql.cj.jdbc.Driver
24+
app.datasource.mysql.maximumPoolSize=10
25+
app.datasource.mysql.minimumIdle=2
26+
app.datasource.mysql.connectionTimeout=20000
27+
app.datasource.mysql.idleTimeout=300000
28+
app.datasource.mysql.maxLifetime=1200000
29+
30+
# Schema and Data Initialization - PostgreSQL (Main PetClinic)
2531
spring.sql.init.mode=always
2632
spring.sql.init.continue-on-error=false
2733
spring.sql.init.separator=;
@@ -31,7 +37,8 @@ spring.sql.init.separator=;
3137
app.patient.records.auto-init=false
3238
app.patient.records.enabled=${PATIENT_RECORDS_ENABLED:true}
3339

34-
# JPA/Hibernate Settings - H2 (Main PetClinic Data)
40+
# JPA/Hibernate Settings - PostgreSQL (Main PetClinic Data)
41+
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
3542
spring.jpa.hibernate.ddl-auto=none
3643
spring.jpa.show-sql=false
3744
spring.jpa.properties.hibernate.format_sql=false
@@ -41,8 +48,8 @@ spring.jpa.properties.hibernate.order_updates=true
4148
spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true
4249

4350
# Application Architecture Settings
44-
app.database.primary=h2
51+
app.database.primary=postgres
4552
app.database.secondary=mysql
46-
app.database.mode=separated
47-
app.database.primary.purpose=petclinic_data
53+
app.database.mode=multi_database
54+
app.database.primary.purpose=petclinic_data_and_clinic_activity
4855
app.database.secondary.purpose=patient_records_only

0 commit comments

Comments
 (0)