当前位置: 首页 > 知识库问答 >
问题:

想要配置没有数据源的作业

臧友樵
2023-03-14

当在SpringbatchConfiguration类中配置了Datasource时,我可以运行Springbatch应用程序。但我不想配置数据源。所以我使用了ResourceLestransactionManager。请参阅下面我的配置类。有人指导我如何在不配置Datasource的情况下启动作业,将其作为Batchjob配置的一部分。

@Configuration
@EnableBatchProcessing
@EnableAutoConfiguration
//@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class SprintgBatchConfiguration {

    /*@Autowired
    private DBConfiguration dbConfig;*/

    /*@Autowired
    private DataSource dataSource;

    @Autowired
    private DataSourceTransactionManager transactionManager;
    */
    //Tomcat relaated configuration//
    @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setMaxFileSize("124MB");
        factory.setMaxRequestSize("124MB");
        return factory.createMultipartConfig();
    }

    @Bean(name="csvjob")
    public Job job(JobBuilderFactory jobBuilderFactory,StepBuilderFactory stepBuilderFactory,ItemReader<List<CSVPojo>> itemReader,ItemProcessor<List<CSVPojo>,CsvWrapperPojo> itemProcessor,AmqpItemWriter<CsvWrapperPojo> itemWriter){
        Step step=stepBuilderFactory.get("ETL-CSV").<List<CSVPojo>,CsvWrapperPojo>chunk(100)
                .reader(itemReader)
                .processor(itemProcessor)
                .writer(itemWriter)
                .build();



        Job csvJob= jobBuilderFactory.get("ETL").incrementer(new RunIdIncrementer())
        .start(step).build();

        return csvJob;
    }

    @Bean(name="exceljob")
    public Job jobExcel(JobBuilderFactory jobBuilderFactory,StepBuilderFactory stepBuilderFactory,ItemReader<List<ExcelPojo>> itemReader,ItemProcessor<List<ExcelPojo>,ExcelWrapperPojo> itemProcessor,AmqpItemWriter<ExcelWrapperPojo> itemWriter){
        Step step=stepBuilderFactory.get("ETL-Excel").<List<ExcelPojo>,ExcelWrapperPojo>chunk(100)
                .reader(itemReader)
                .processor(itemProcessor)
                .writer(itemWriter)
                .build();

        Job ExcelJob= jobBuilderFactory.get("ETL-Excel").incrementer(new RunIdIncrementer())
        .start(step).build();

        return ExcelJob;
    }

    /*@Override
    public void setDataSource(DataSource dataSource){
        System.out.println("overriden");
    }*/

    /*@Bean
    public FlatFileItemReader<CSVPojo> fileItemReader(Resource resource){

        return null;
    }*/
    /*@Bean(name="dataSource")
    public DataSource dataSource() throws SQLException
    {


        //BasicDataSource  dataSource = new BasicDataSource();

        return dataSource;

    }*/
    @Bean(name="transactionManager")
    public ResourcelessTransactionManager transactionManager() throws SQLException{

        return new ResourcelessTransactionManager();

    }
    /*@Bean(name="transactionManager")
    public DataSourceTransactionManager transactionManager() throws SQLException{

        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(this.dataSource());
        return transactionManager;

    }*/


    /*@Bean
    public JobRepository jobRepository() throws Exception{
        JobRepositoryFactoryBean factoryBean = new JobRepositoryFactoryBean();
        factoryBean.setDatabaseType("ORACLE");
        factoryBean.setDataSource(dataSource);
        factoryBean.setTransactionManager(transactionManager);
        factoryBean.setIsolationLevelForCreate("ISOLATION_READ_UNCOMMITTED");
        return factoryBean.getObject();

    }*/

    @Bean
    public JobRepository jobRepository(ResourcelessTransactionManager transactionManager) throws Exception {
        MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean(transactionManager);
        mapJobRepositoryFactoryBean.setTransactionManager(transactionManager);
        return mapJobRepositoryFactoryBean.getObject();
    }


}

但是当我运行应用程序时,我的异常值低于异常值。

共有1个答案

司马俊晖
2023-03-14

Spring靴适用于建筑生产级应用。当它用于构建Spring批处理应用程序时,它需要一个数据源来持久化Spring批处理元数据(请参见BATCH-2704)。

但您始终可以使用以下任一项:

  • Spring Boot(H2、HSQL或Derby)支持的嵌入式数据源,只需将其添加到类路径中即可。此数据源将由Spring批处理自动拾取
  • 或提供自定义的BatchConfigureer并使用MapJobRepository(请参阅此处)

希望这有帮助。

 类似资料:
  • 配置项说明 schemaName: # 逻辑数据源名称 dataSources: # 数据源配置,可配置多个 <data-source-name> <data-source-name>: # 与 ShardingSphere-JDBC 配置不同,无需配置数据库连接池 url: #数据库 URL 连接 username: # 数据库用户名 password: # 数据库

  • 这是我的设备 这是我的消息正文作者 我的问题是: 为什么结果似乎不正确?我被放在@JsonRootName(“Facility”)上,并且还启用了包装根特性 我错过了什么

  • pom.xml已更新: spring.version=3.2.4.发布spring.security.version=3.1.4.发布 然后我添加了一个新的java配置类,而不是spring-security.xml null 有人能给出一个建议吗?

  • 我在Java应用程序中使用HikariDataSource。我对使用它非常陌生。 这是我的配置: 在这里,我将设置为1。当我运行应用程序时,此连接通常处于空闲状态: 我想弄明白 一秒钟内一个连接可以处理多少个请求。 一个连接是否可以并行接受和处理多个请求,或者其他请求必须等到上一个请求完成? 任何建议都会有所帮助。

  • 我有一个基于Spring框架的项目,它只基于Java配置进行初始化。这意味着不需要使用web.xml文件。 您可以在下面的图像中看到项目的结构: Java 7 Spring framework 4.2.1.发布 HibernateORM 5.0.4.final Spring Tool Suite IDE 3.6.2 Maven3 Tomcat 7 数据源 而SystemSettings保存数据库的

  • 问题内容: 当我们使用Hibernate配置数据源时,我们应该添加属性(或者如果您正在使用EclipseLink)。 我想知道 方言 是什么意思?我根据Hibernate的文档配置了此属性,但我不知道它的含义是什么。 问题答案: 方言的意思是“一种语言的变体”。众所周知,Hibernate与数据库无关。它可以与不同的数据库一起使用。但是,数据库具有专有的扩展名/本机SQL变体,以及SQL标准实现的