Ignore non-default candidates in type-based matching
Closes gh-22403
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,35 +16,20 @@
|
||||
|
||||
package org.springframework.boot.docs.howto.dataaccess.configuretwodatasources;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.jdbc.DataSourceBuilder;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class MyDataSourcesConfiguration {
|
||||
public class MyAdditionalDataSourceConfiguration {
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first")
|
||||
public DataSourceProperties firstDataSourceProperties() {
|
||||
return new DataSourceProperties();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first.configuration")
|
||||
public HikariDataSource firstDataSource(DataSourceProperties firstDataSourceProperties) {
|
||||
return firstDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second")
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.datasource")
|
||||
public BasicDataSource secondDataSource() {
|
||||
return DataSourceBuilder.create().type(BasicDataSource.class).build();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.springframework.boot.docs.howto.dataaccess.configuretwodatasources;
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
@@ -24,33 +23,20 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class MyCompleteDataSourcesConfiguration {
|
||||
public class MyCompleteAdditionalDataSourceConfiguration {
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first")
|
||||
public DataSourceProperties firstDataSourceProperties() {
|
||||
return new DataSourceProperties();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first.configuration")
|
||||
public HikariDataSource firstDataSource(DataSourceProperties firstDataSourceProperties) {
|
||||
return firstDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second")
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.datasource")
|
||||
public DataSourceProperties secondDataSourceProperties() {
|
||||
return new DataSourceProperties();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second.configuration")
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.datasource.configuration")
|
||||
public BasicDataSource secondDataSource(
|
||||
@Qualifier("secondDataSourceProperties") DataSourceProperties secondDataSourceProperties) {
|
||||
return secondDataSourceProperties.initializeDataSourceBuilder().type(BasicDataSource.class).build();
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2021 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -18,6 +18,7 @@ package org.springframework.boot.docs.howto.dataaccess.usemultipleentitymanagers
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
|
||||
@@ -28,19 +29,21 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class MyEntityManagerFactoryConfiguration {
|
||||
public class MyAdditionalEntityManagerFactoryConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.jpa.first")
|
||||
public JpaProperties firstJpaProperties() {
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.jpa")
|
||||
public JpaProperties secondJpaProperties() {
|
||||
return new JpaProperties();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LocalContainerEntityManagerFactoryBean firstEntityManagerFactory(DataSource firstDataSource,
|
||||
JpaProperties firstJpaProperties) {
|
||||
EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(firstJpaProperties);
|
||||
return builder.dataSource(firstDataSource).packages(Order.class).persistenceUnit("firstDs").build();
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
public LocalContainerEntityManagerFactoryBean secondEntityManagerFactory(@Qualifier("second") DataSource dataSource,
|
||||
@Qualifier("second") JpaProperties jpaProperties) {
|
||||
EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(jpaProperties);
|
||||
return builder.dataSource(dataSource).packages(Order.class).persistenceUnit("second").build();
|
||||
}
|
||||
|
||||
private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(JpaProperties jpaProperties) {
|
||||
@@ -16,6 +16,6 @@
|
||||
|
||||
package org.springframework.boot.docs.howto.dataaccess.usemultipleentitymanagers;
|
||||
|
||||
class Order {
|
||||
public class Order {
|
||||
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableJpaRepositories(basePackageClasses = Order.class, entityManagerFactoryRef = "firstEntityManagerFactory")
|
||||
@EnableJpaRepositories(basePackageClasses = Order.class, entityManagerFactoryRef = "entityManagerFactory")
|
||||
public class OrderConfiguration {
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2022 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,34 +16,20 @@
|
||||
|
||||
package org.springframework.boot.docs.howto.dataaccess.configuretwodatasources
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import org.apache.commons.dbcp2.BasicDataSource
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties
|
||||
|
||||
import org.springframework.beans.factory.annotation.Qualifier
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||
import org.springframework.boot.jdbc.DataSourceBuilder
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.context.annotation.Configuration
|
||||
import org.springframework.context.annotation.Primary
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
class MyDataSourcesConfiguration {
|
||||
class MyAdditionalDataSourceConfiguration {
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first")
|
||||
fun firstDataSourceProperties(): DataSourceProperties {
|
||||
return DataSourceProperties()
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first.configuration")
|
||||
fun firstDataSource(firstDataSourceProperties: DataSourceProperties): HikariDataSource {
|
||||
return firstDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource::class.java).build()
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second")
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.datasource")
|
||||
fun secondDataSource(): BasicDataSource {
|
||||
return DataSourceBuilder.create().type(BasicDataSource::class.java).build()
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2022 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,39 +16,27 @@
|
||||
|
||||
package org.springframework.boot.docs.howto.dataaccess.configuretwodatasources
|
||||
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import org.apache.commons.dbcp2.BasicDataSource
|
||||
|
||||
import org.springframework.beans.factory.annotation.Qualifier
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.context.annotation.Configuration
|
||||
import org.springframework.context.annotation.Primary
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
class MyCompleteDataSourcesConfiguration {
|
||||
class MyCompleteAdditionalDataSourceConfiguration {
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first")
|
||||
fun firstDataSourceProperties(): DataSourceProperties {
|
||||
return DataSourceProperties()
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@ConfigurationProperties("app.datasource.first.configuration")
|
||||
fun firstDataSource(firstDataSourceProperties: DataSourceProperties): HikariDataSource {
|
||||
return firstDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource::class.java).build()
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second")
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.datasource")
|
||||
fun secondDataSourceProperties(): DataSourceProperties {
|
||||
return DataSourceProperties()
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.datasource.second.configuration")
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.datasource.configuration")
|
||||
fun secondDataSource(secondDataSourceProperties: DataSourceProperties): BasicDataSource {
|
||||
return secondDataSourceProperties.initializeDataSourceBuilder().type(BasicDataSource::class.java).build()
|
||||
}
|
||||
@@ -18,6 +18,7 @@ package org.springframework.boot.docs.howto.dataaccess.usemultipleentitymanagers
|
||||
|
||||
import javax.sql.DataSource
|
||||
|
||||
import org.springframework.beans.factory.annotation.Qualifier
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties
|
||||
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder
|
||||
@@ -29,21 +30,23 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
class MyEntityManagerFactoryConfiguration {
|
||||
class MyAdditionalEntityManagerFactoryConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties("app.jpa.first")
|
||||
fun firstJpaProperties(): JpaProperties {
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
@ConfigurationProperties("app.jpa")
|
||||
fun secondJpaProperties(): JpaProperties {
|
||||
return JpaProperties()
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Qualifier("second")
|
||||
@Bean(defaultCandidate = false)
|
||||
fun firstEntityManagerFactory(
|
||||
firstDataSource: DataSource?,
|
||||
firstJpaProperties: JpaProperties
|
||||
@Qualifier("second") dataSource: DataSource,
|
||||
@Qualifier("second") jpaProperties: JpaProperties
|
||||
): LocalContainerEntityManagerFactoryBean {
|
||||
val builder = createEntityManagerFactoryBuilder(firstJpaProperties)
|
||||
return builder.dataSource(firstDataSource).packages(Order::class.java).persistenceUnit("firstDs").build()
|
||||
val builder = createEntityManagerFactoryBuilder(jpaProperties)
|
||||
return builder.dataSource(dataSource).packages(Order::class.java).persistenceUnit("second").build()
|
||||
}
|
||||
|
||||
private fun createEntityManagerFactoryBuilder(jpaProperties: JpaProperties): EntityManagerFactoryBuilder {
|
||||
Reference in New Issue
Block a user