Utilisation de @EnableAutoConfiguration et application.properties :
Exemple application.properties :
# Primary Data Source spring.datasource.url=jdbc:h2:mem:default spring.datasource.username=sa spring.datasource.password= # Additional Data Source additional.datasource.url=jdbc:h2:mem:additional additional.datasource.username=anotheruser additional.datasource.password=anotherpassword
Exemple de classe de configuration pour Source de données principale :
<code class="java">@Configuration @EnableTransactionManagement @EnableAutoConfiguration @EnableJpaRepositories( entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager", basePackages = {"com.example.repository.primary"}) public class PrimaryDataSourceConfig { @Bean public EntityManagerFactory entityManagerFactory() { // Create and configure EntityManagerFactory manually } @Bean public PlatformTransactionManager transactionManager() { // Create and configure PlatformTransactionManager manually } }</code>
Exemple de classe de configuration pour une source de données supplémentaire :
<code class="java">@Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "additionalEntityManagerFactory", transactionManagerRef = "additionalTransactionManager", basePackages = {"com.example.repository.additional"}) public class AdditionalDataSourceConfig { @Value("${additional.datasource.url}") private String url; @Value("${additional.datasource.username}") private String username; @Value("${additional.datasource.password}") private String password; @Bean public DataSource additionalDataSource() { // Create and configure DataSource manually } @Bean public EntityManagerFactory additionalEntityManagerFactory() { // Create and configure EntityManagerFactory manually } @Bean public PlatformTransactionManager additionalTransactionManager() { // Create and configure PlatformTransactionManager manually } }</code>
Exemple de classe de service avec annotations transactionnelles :
<code class="java">@Service @Transactional("transactionManager") // Use primary transaction manager public class PrimaryService { // ... } @Service @Transactional("additionalTransactionManager") // Use additional transaction manager public class AdditionalService { // ... }</code>
Cette approche offre un plus grand contrôle et une plus grande flexibilité lorsque vous travaillez avec plusieurs sources de données dans les applications Spring Boot.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!