我正在尝试运行一个spring批处理应用程序,它从sqlserverdb读取数据并写入csv文件。下面是sql server db的数据库配置文件:-
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
basePackages = {"com.sample.repository"},
entityManagerFactoryRef = "sampleEntityManagerFactory",
transactionManagerRef = "transManager"
)
public class CompensationConfiguration
{
@Primary
@Bean(name="cmpnDS")
@ConfigurationProperties(prefix = "sample.datasource.compensation")
public DataSource sampleDataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "sampleEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean sampleEntityManagerFactory(EntityManagerFactoryBuilder builder,
@Qualifier("cmpnDS") DataSource dataSource) {
return builder
.dataSource(dataSource)
.packages("com.opencodez.entity")
.build();
}
@Primary
@Bean(name = "transManager")
public PlatformTransactionManager hrprdTransactionManager(@Qualifier("sampleEntityManagerFactory")
EntityManagerFactory entityManagerFactoryBean) {
return new JpaTransactionManager(entityManagerFactoryBean);
}
}
下面是pom的一个片段file:-
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>mybat</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mybat</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven-jar-plugin.version>2.6</maven-jar-plugin.version>
<spring-cloud.version>Hoxton.RC2</spring-cloud.version>
</properties>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
以及以下属性file:-
spring:
datasource:
url: jdbc:h2:mem:testdb
username: sa
password:
driver-class-name: org.h2.Driver
当我尝试启动应用程序时,它无法从以下内容开始error:-
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'h2Console' defined in class path resource [org/springframework/boot/autoconfigure/h2/H2ConsoleAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.ServletRegistrationBean]: Factory method 'h2Console' threw exception; nested exception is java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
此应用程序读取sql server数据库以处理记录。spring批处理使用内存数据库。这是一个多数据源场景吗?我没有为h2的数据源配置做任何编码,因为它应该是自动配置的。我拥有pom-sprign批处理核心、devtools、h2数据库、jpa等中包含的所有必需依赖项。
3条答案
按热度按时间7fyelxc51#
您必须在.m2 maven本地存储库中删除h2的相关jar文件,它必须已损坏。
之后,您必须运行“mvn spring”-boot:run“再说一次,可能不止一个jar被损坏了,所以检查它并重新获取配方(每次需要在删除jar之后运行该命令时)。
nbysray52#
我创建了两个datasource配置类,每个数据库一个,并将h2 datasource标记为primary。这个应用程序在这次更改后启动良好。
z31licg03#
我通过设置
在我的spring boot application.properties文件中。
该属性的文档说,您可以通过删除springbootdevtools的pom依赖项来摆脱这个问题(这里详细介绍)。