簡體   English   中英

定義e如何在spring boot項目上的application.properties中選擇第二個數據源

[英]How define e chose a second datasource from application.properties on spring boot project

我是彈簧規格的新手。 我在JEE工作了很長時間。 因此,我了解到我們是使用spring在application.properties文件上定義數據源的。

如何在application.properties上定義兩個或多個數據源,以及如何選擇第二個數據源? 如果我嘗試使用spring.datasourceB.datasource.meta-datas定義第二個數據源,則該文件將顯示一些標志,表明未知屬性。

我目前的情況是建立一個像這樣的項目:

application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xx.xx.xx.xx:3306/dbA?useSSL=false
spring.datasource.username=username
spring.datasource.password=password

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

spring.DSB.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

# Enable to auto identify each datasource
spring.jpa.database=default

我的存儲庫類如下所示:

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;

@Repository
public class ClassDaoDSA {

    @PersistenceContext
    private EntityManager manager;

    public List<T> Records() {

        String stmt = "SELECT d FROM Data d ORDER BY d.id DESC";

        return manager.createQuery(stmt).getResultList();
    }

}

當我處理JEE項目時,可以使用@PersistenceUnit標記並在那里選擇我的數據源。 我如何使用Spring Boot達到相同的結果?

您使用的命名約定不是強制性的,它只是使您無需進行配置。 但是您也可以使用配置類。 這是我的一個項目的示例:

@Configuration
@PropertySource("app.properties")
public class DataConfig {
    @Autowired
    private Environment env;

    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        Resource config = new ClassPathResource("hibernate.cfg.xml");
        LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
        sessionFactory.setConfigLocation(config);
        sessionFactory.setPackagesToScan(env.getProperty("myapp.entity.package"));
        sessionFactory.setDataSource(dataSource());
        return sessionFactory;
    }

    @Bean
    public DataSource dataSource() {
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName(env.getProperty("myapp.db.driver"));
        ds.setUrl(env.getProperty("myapp.db.url"));
        ds.setUsername(env.getProperty("myapp.db.username"));
        ds.setPassword(env.getProperty("myapp.db.password"));

        return ds;
    }
}

您可以具有不同的屬性文件,並在@PropertySource批注中指定要使用的屬性文件,也可以具有其他屬性,例如myapp.prod.db.url和myapp.test.db.url,並根據需要設置數據源。 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM