如何定义 e 在 spring 引导项目上从 application.properties 选择第二个数据源
How define e chose a second datasource from application.properties on spring boot project
我是 spring 规范的新手。我在 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
我的存储库 class 看起来像这样:
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?
获得相同的结果
您使用的命名约定不是强制性的,它只是让您无需进行配置。但是你也可以使用一个配置class。这是我的一个项目的示例:
@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 并将您的数据源设置为需要。
我是 spring 规范的新手。我在 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
我的存储库 class 看起来像这样:
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?
获得相同的结果您使用的命名约定不是强制性的,它只是让您无需进行配置。但是你也可以使用一个配置class。这是我的一个项目的示例:
@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 并将您的数据源设置为需要。