最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot批處理的實現(xiàn)示例

 更新時間:2022年03月15日 10:58:50   作者:清雨未盡時  
SpringBatch是一個開源 的、全面的、輕量級的批處理框架,通過SpringBoot可以實現(xiàn)強大的批處理應(yīng)用程序開發(fā),本文主要介紹了SpringBoot批處理的實現(xiàn)示例,感興趣的可以了解一下

Spring Batch是一個開源 的、全面的、輕量級的批處理框架,通過Spring  Boot 可以實現(xiàn)強大的批處理應(yīng)用程序開發(fā)。

Spring Batch提供了ItemReader、ItemProcessor和ItemWriter來完成數(shù)據(jù)的讀取、處理及寫出操作,并且可以將批處理的執(zhí)行狀態(tài) 持久化到數(shù)據(jù)庫中。

https://spring.io/projects/spring-batch

1.添加依賴

<dependency>
?? ?<groupId>org.springframework.boot</groupId>
?? ?<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
?? ?<groupId>org.springframework.boot</groupId>
?? ?<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
?? ?<groupId>com.alibaba</groupId>
?? ?<artifactId>druid-spring-boot-starter</artifactId>
?? ?<version>1.1.9</version>
</dependency>
<dependency>
?? ?<groupId>mysql</groupId>
?? ?<artifactId>mysql-connector-java</artifactId>
</dependency>

2.添加配置 信息

server.port=9000
spring.http.encoding.force-response=true
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql:///batch
spring.datasource.username  = root
spring.datasource.password  = kangxg198811
#項目啟動時創(chuàng)建數(shù)據(jù)表的SQL腳本
spring.datasource.schema=classpath:/org/springframework/batch/core/schema-mysql.sql
#項目啟動時執(zhí)行建表SQL
spring.batch.initialize-schema=always
#配置后不會自動執(zhí)行
spring.batch.job.enabled=false

3.在項目啟動類上添加@EnableBatchProcessing注解開開啟Spring Batch支持

@SpringBootApplication
@EnableBatchProcessing
public class BatchApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(BatchApplication.class, args);
    }
 
}

4.配置批處理

@Configuration
public class CsvBatchJobConfig {
    @Autowired
    JobBuilderFactory jobBuilderFactory;
 
    @Autowired
    StepBuilderFactory stepBuilderFactory;
 
    @Autowired
    DataSource dataSource;
 
    class CustomLineCallbackHandler implements LineCallbackHandler{
        @Override
        public void handleLine(String result)
        {
            System.out.println(result);
        }
    }
    @Bean
    ItemReader<User> itemReader()
    {
         FlatFileItemReader<User> reader = new FlatFileItemReader<User>();
         reader.setLinesToSkip(1);
         reader.setResource(new ClassPathResource("data.csv"));
         reader.setLineMapper(new DefaultLineMapper<User>(){
             {
                 setLineTokenizer(new DelimitedLineTokenizer(){{
                     setNames(new String[]{"id","username","address","gender"});
                     //setDelimiter("\t");
                 }});
                 setFieldSetMapper(new BeanWrapperFieldSetMapper<User>(){{
                     setTargetType(User.class);
                 }});
 
             }
         });
         reader.setSkippedLinesCallback(new CustomLineCallbackHandler());
         return reader;
    }
 
    @Bean
    JdbcBatchItemWriter jdbcBatchItemWriter()
    {
        JdbcBatchItemWriter writer = new JdbcBatchItemWriter();
        writer.setDataSource(dataSource);
        writer.setSql("insert into user(id,username,address,gender)" + "values(:id,:username,:address,:gender)");
        writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider());
        return  writer;
    }
 
    @Bean
    Step csvStep()
    {
        return  stepBuilderFactory.get("csvStep")
                .<User,User>chunk(2)
                .reader(itemReader())
                .writer(jdbcBatchItemWriter())
                .build();
    }
 
    @Bean
    Job csvJob()
    {
        return jobBuilderFactory.get("csvJob")
                .start(csvStep())
                .build();
    }
 
}

5.實體類

public class User {
    private Integer id;
 
    private String username;
 
    private  String address;
 
    private  String gender;
    public User(Integer id,String username,String address,String gender)
    {
        this.username= username;
        this.id = id;
        this.address = address;
        this.gender = gender;
    }
 
    public  User()
    {
        super();
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public void setAddress(String address) {
        this.address = address;
    }
 
    public String getUsername() {
        return username;
    }
 
    public String getGender() {
        return gender;
    }
    
    public Integer getId() {
        return id;
    }
    
    public String getAddress() {
        return address;
    }
 
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }
}

6.創(chuàng)建Controller

@RestController
public class BatchController {
    @Autowired
    JobLauncher jobLauncher;
 
    @Autowired
    Job job;
 
    @GetMapping("/batch")
    public void batch()
    {
        try {
            jobLauncher.run(job,new JobParametersBuilder().toJobParameters());
 
        }catch (Exception e)
        {
            e.printStackTrace();
        }
    }
 
}

這里配置就結(jié)束了,數(shù)據(jù)庫會增加一些自動創(chuàng)建到表,但是User表不能自動創(chuàng)建和字段需要提前設(shè)置,否則會出現(xiàn)錯誤,還需要進一步處理,待完成。暫做標記!

到此這篇關(guān)于SpringBoot批處理的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot批處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring多對象引入方法

    Spring多對象引入方法

    今天小編就為大家分享一篇關(guān)于Spring多對象引入方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java實現(xiàn)上傳圖片并壓縮圖片大小功能

    java實現(xiàn)上傳圖片并壓縮圖片大小功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)上傳圖片并壓縮圖片大小功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MyBatis-Plus工具使用之EntityWrapper解析

    MyBatis-Plus工具使用之EntityWrapper解析

    這篇文章主要介紹了MyBatis-Plus工具使用之EntityWrapper解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 在SpringBoot: SpringBoot里面創(chuàng)建導出Excel的接口教程

    在SpringBoot: SpringBoot里面創(chuàng)建導出Excel的接口教程

    這篇文章主要介紹了在SpringBoot: SpringBoot里面創(chuàng)建導出Excel的接口教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Invalid?bound?statement?(not?found)出現(xiàn)原因以及解決辦法

    Invalid?bound?statement?(not?found)出現(xiàn)原因以及解決辦法

    這篇文章主要給大家介紹了關(guān)于Invalid?bound?statement?(not?found)出現(xiàn)原因以及解決辦法的相關(guān)資料,文中給出了詳細的解決方法,需要的朋友可以參考下
    2023-07-07
  • Mybatis CachingExecutor二級緩存使用示例詳解

    Mybatis CachingExecutor二級緩存使用示例詳解

    這篇文章主要介紹了?Mybatis的CachingExecutor與二級緩存使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 淺析Alibaba Nacos注冊中心源碼剖析

    淺析Alibaba Nacos注冊中心源碼剖析

    這篇文章主要介紹了淺析Alibaba Nacos注冊中心源碼剖析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • 教你如何區(qū)分Spring與Structs2中間件

    教你如何區(qū)分Spring與Structs2中間件

    這篇文章主要介紹了教你如何區(qū)分Spring與Structs2中間件,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Mybatis攔截器實現(xiàn)數(shù)據(jù)權(quán)限的示例代碼

    Mybatis攔截器實現(xiàn)數(shù)據(jù)權(quán)限的示例代碼

    在我們?nèi)粘i_發(fā)過程中,通常會涉及到數(shù)據(jù)權(quán)限問題,本文主要介紹了Mybatis攔截器實現(xiàn)數(shù)據(jù)權(quán)限的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java Map 通過 key 或者 value 過濾的實例代碼

    Java Map 通過 key 或者 value 過濾的實例代碼

    這篇文章主要介紹了Java Map 通過 key 或者 value 過濾的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06

最新評論

抚顺市| 拉孜县| 井研县| 铜陵市| 剑河县| 通州市| 东乌珠穆沁旗| 丹凤县| 泰安市| 连城县| 新河县| 进贤县| 建昌县| 满洲里市| 罗山县| 巫溪县| 潞西市| 宁城县| 叙永县| 宁津县| 疏附县| 建平县| 建阳市| 神池县| 怀化市| 胶南市| 尼勒克县| 昆山市| 西华县| 和龙市| 华宁县| 彩票| 石泉县| 汉沽区| 于都县| 宁国市| 阿坝县| 河源市| 涟水县| 资中县| 新平|