Spring связывает разные файлы свойств с разными bean-компонентами - PullRequest
0 голосов
/ 19 сентября 2019

Это мой файл свойств MySQL

mysql.properties

dialect=org.hibernate.dialect.MySQL57Dialect
hbm2ddl_method=validate
show_sql=true
format_sql=false
pool_name=testpool
jdbc_url=jdbc:mysql://localhost:3306/testdb
minimum_idle=2
uname=root
password=testpsw
cache_prep_stmts=true
prep_stmt_cache_size=256
prep_stmt_cache_sql_limit=2048
use_server_prep_stmts=true
maximum_pool_size=30
driver_class_name=com.mysql.jdbc.Driver

и файл свойств Oracle для конфигурации источника данных.

dialect=org.hibernate.dialect.Oracle10gDialect
hbm2ddl_method=validate
show_sql=true
format_sql=false
pool_name=testpool
jdbc_url=jdbc:oracle:thin:@localhost:1521:testdb
minimum_idle=2
uname=barn_act
password=testpsw
cache_prep_stmts=true
prep_stmt_cache_size=256
prep_stmt_cache_sql_limit=2048
use_server_prep_stmts=true
maximum_pool_size=30
driver_class_name=oracle.jdbc.OracleDriver

Я создал два таких класса, чтобы связать свойства с полями.

@Component("mysql_props")
@PropertySource(value = "classpath:/mysql.properties")
@ConfigurationProperties
@Getter
@Setter
public class HibernateMySQLProperties {

    private String dialect;
    //other props

}


@Component("oracle_props")
@PropertySource(value = "classpath:/oracle.properties")
@ConfigurationProperties
@Getter
@Setter
public class HibernateOracleProperties {
//same fileds as mysql
}

Когда я вставляю эти два компонента в класс PersistenceConfiguration, вводятся одинаковые поля свойств.

@Configuration
@EnableConfigurationProperties({ HibernateOracleProperties.class, HibernateMySQLProperties.class })
public class PersistenceConfig {

    @Autowired
    @Qualifier("oracle_props")
    private HibernateOracleProperties oracleProps;

    @Autowired
    @Qualifier("mysql_props")
    private HibernateMySQLProperties mysqlProps;
}

enter image description here

enter image description here

Как решить эту проблему?

1 Ответ

1 голос
/ 19 сентября 2019

Это известная проблема / поведение весной до весенней загрузки.Весной заполнитель недвижимости может понять уникальный ключ.Оба файла свойств имеют одинаковые имена ключей.

Таким образом, решение будет таким, как показано ниже, с меньшим количеством изменений.

Измените файл свойств, как показано ниже.mysql.properties

mysql.dialect=org.hibernate.dialect.MySQL57Dialect
****** all otheres same start with mysql.

Файл свойств Oracle

oracle.dialect=org.hibernate.dialect.Oracle10gDialect
 ****** all otheres same start with oracle.

Теперь измените аннотацию Hibernate * Properties.java @ConfigurationProperties.

@Component("oracle_props")
@PropertySource(value = "classpath:/oracle.properties")
@ConfigurationProperties(prefix = "oracle")


@Component("mysql_props")
@PropertySource(value = "classpath:/mysql.properties")
@ConfigurationProperties(prefix = "mysql")

Не нужно никаких измененийв файле PersistenceConfig.java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...