春季批处理:创建名称为Gradle Mongodb的bean时出错

时间:2018-10-26 19:07:27

标签: java spring mongodb gradle spring-batch

我的应用程序无法启动。使用文件名创建一个bean给我一个错误。我搜索并找到了与此问题类似的帖子,但它们似乎与我的错误无关,所以我希望有人可以找到可能导致此文件失败的原因。另外,我在两种方法之间处于交叉状态。我是否使用FlatFileReader或MomgoItemreader?我只需要从数据库的名字和姓氏中检索两件事。我需要读取数据库,然后将其写入尚未完成的文件。任何帮助将不胜感激。

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

这是我的课程

@Configuration
@EnableBatchProcessing
public class PaymentPortalJob {
private static final Logger LOG = 
LoggerFactory.getLogger(PaymentPortalJob.class);

@SuppressWarnings("unused")
@Autowired
private JobBuilderFactory jobBuilderFactory;
@SuppressWarnings("unused")
@Autowired
private StepBuilderFactory stepBuilderFactory;





@Autowired
private PaymentAuditRepository paymentAuditRepository;

 // @Bean
 // public FlatFileItemReader<PaymentAudit> PaymentPortalReader() {
 //     LOG.info("Inside PaymentPortalReader Method {}", "");
 //     return new FlatFileItemReaderBuilder<PaymentAudit> 
 ().name("PaymentPortalReader")
 //             .delimited().names(new String[] { "rxFname", "rxLname" })
 //             .fieldSetMapper(new BeanWrapperFieldSetMapper<PaymentAudit> 
    () {
 //                 {
 //                     setTargetType(PaymentAudit.class);
 //                 }
 //             }).build();
 //
 // }
@Bean
public ItemReader<PaymentAudit> reader() {
    LOG.info("inside of ItemReader");
    MongoItemReader<PaymentAudit> reader = new MongoItemReader<PaymentAudit>();

    try {
        reader.setTemplate(mongoTemplate());
    } catch (Exception e) {
        LOG.error(e.toString());
    }
    reader.setCollection("local");
    return reader();
}



@Bean
public ItemProcessor<PaymentAudit, PaymentAudit> processor() {
    return new PaymentPortalNOSQLProcessor();

}

@Bean
public ItemWriter<PaymentAudit> writer() {
    MongoItemWriter<PaymentAudit> writer = new MongoItemWriter<PaymentAudit>();
    try {
        writer.setTemplate(mongoTemplate());
    } catch (Exception e) {
        LOG.error(e.toString());
    }
    writer.setCollection("paymentPortal");
    return writer;
}

@Bean
Job job(JobBuilderFactory jbf, StepBuilderFactory sbf, ItemReader<? extends PaymentAudit> ir,
        ItemWriter<? super PaymentAudit> iw) {

    Step s1 = sbf.get("file-db").<PaymentAudit, PaymentAudit>chunk(100).reader(ir).writer(iw).build();

    return jbf.get("etl").incrementer(new RunIdIncrementer()).start(s1).build();
}

@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(), "local");
}

@Bean
public MongoTemplate mongoTemplate() throws Exception {
    MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());
    return mongoTemplate;
}

}

appplication.yml

 mongodb:

databasePort: xxxxx
databaseName: local
 spring:
   data:
    mongodb:
      host: localhost
      port: xxxxx
  profiles:
   active: local
   batch:
    job:
      enabled: true

处理器:

package com.spring_batchjob.job.item;

import org.springframework.batch.item.ItemProcessor;

import com.spring_batchjob.bean.PaymentAudit;




public class PaymentPortalNOSQLProcessor implements 
ItemProcessor<PaymentAudit, PaymentAudit> {


@Override
public PaymentAudit process(PaymentAudit bean) throws Exception {
    return bean;

}

}

回购:

package com.spring_batchjob.repository;

import java.time.LocalDateTime;
import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import com.spring_batchjob.bean.PaymentAudit;

@Repository
public interface PaymentAuditRepository extends 
MongoRepository<PaymentAudit, String> {

//  List<PaymentAudit> findByCreateDttmBetween(LocalDateTime createStart, 
   LocalDateTime createEnd);
   List<PaymentAudit> findByRxFNameAndRxLName(String rxFName, String 
   rxLName);

}

运行应用后出现错误:

2018-10-26 13:26:34.256  WARN 16376 --- [  restartedMain] 
ConfigServletWebServerApplicationContext : Exception encountered during 
context initialization - cancelling refresh attempt: 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
creating bean with name 'paymentPortalJob': Unsatisfied dependency expressed 
through field 'jobBuilderFactory'; nested exception is 
org.springframework.beans.factory.UnsatisfiedDependencyException: Error 
creating bean with name 

'org.springframework.batch.core.configuration.annotation.
 SimpleBatchConfiguration': Unsatisfied dependency expressed through field 
'dataSource'; nested exception is 
 org.springframework.beans.factory.BeanCreationException: 
 Error creating bean 
 with name 'dataSource' defined in class path resource 

[org/springframework/boot/autoconfigure/jdbc/
DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method 
failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw 
exception; nested exception is 
org.springframework.boot.autoconfigure.jdbc.
DataSourceProperties$DataSourceBeanCreationException: Failed to determine a 
suitable driver class

0 个答案:

没有答案