首页 > 其他分享 >自定义Starter

自定义Starter

时间:2024-08-15 14:38:47浏览次数:10  
标签:outputStream 自定义 filePath spring boot org public Starter

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.liu</groupId>
    <artifactId>exportExcel-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

编写一个属性类,用来定义我们要集成的功能模块所需要的配置项,并且使用@ConfigurationProperties 注解来指定配置文件中的前缀

@Component
@ConfigurationProperties(prefix = "exportexcel")
public class ExcelProperties {
    private String filePath;

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
}

后续yml文件中可以直接配置相关属性。

示例:

exportexcel:
  file-path: "out.xlsx"

编写一个业务功能类,用来实现我们要集成的功能模块的具体业务逻辑,将数据库中的数据导出为excel文件

public class EasyExcelExport {

    public <T> void exportExcel(OutputStream outputStream, Class<T> clazz, List<T> data) throws IOException, IOException {
        try {
            EasyExcel.write(outputStream, clazz).sheet("data").doWrite(data);
        } finally {
            outputStream.flush();
            outputStream.close();
        }
    }
}

编写一个自动配置类,根据属性类和业务功能类,创建响应的Bean对象

@Configuration  //表明是一个配置类
@EnableConfigurationProperties(ExcelProperties.class)  //来启用属性类
public class excelAutoConfiguration {


    private final ExcelProperties excelProperties;

    public excelAutoConfiguration(ExcelProperties excelProperties){
        this.excelProperties = excelProperties;
    }

    @Bean
    @ConditionalOnMissingBean
    public EasyExcelExport easyExcelExport() {
        return new EasyExcelExport();
    }
}

创建一个自定义的Starter项目时,需要在Resource/META-INF目录下创建一个spring.factories的文件,用来指定我们的自动配置类,让Spring Boot 能够在启动时自定扫描并加载。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  org.liu.exportExcel.config.excelAutoConfiguration

标签:outputStream,自定义,filePath,spring,boot,org,public,Starter
From: https://www.cnblogs.com/solutide/p/18360864

相关文章

  • 自定义小灯状态翻转函数
    一、函数原理   函数主要是通过 uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)这个读取指定的I/O口的电平,来实现小灯状态的翻转。二、示例代码voidLED_Blue_Turn(void){ if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0) { GPIO_Se......
  • apisix-dashboard上添加自定义插件
    参考:https://overstarry.vip/posts/apisix如何添加自定义插件/首先,我们需要向自定义的插件user-remote-auth添加到apisix中,对这块不清楚的同学,可以参考我这篇文章:【apisix~lua插件开发与插件注册】,添加成功之后,通过curlhttp://apisix-admin.apisix:9180/apisix/admin/plugins/us......
  • WebApi 简单使用 JObject,可以省掉自定义的class类
    post提交的json数据:{"name":"Jason","age":18,"color":"blue"}usingNewtonsoft.Json.Linq;[HttpPost("testpost")]publicstringTestPost([FromBody]Objectinput){......
  • golang gin框架中创建自定义中间件的2种方式总结 - func(*gin.Context)方式和闭包函数
    在gin框架中,我们可以通过2种方式创建自定义中间件:1.直接定义一个类型为 func(*gin.Context)的函数或者方法    这种方式是我们常用的方式,也就是定义一个参数为*gin.Context的函数或者方法。定义的方法就是创建一个参数类型为gin.HandlerFunc【他的原型定义为t......
  • AWC 添加自定义的页面
    module.json{  "name":"C9PDFQueryList",  "description":"ThisistheC9PDFQueryListmodule"} 2.states.json {  "C9PDFQueryLoc":{    "data":{      "browserTitle&......
  • Spring Cloud Gateway 实现简单自定义过滤器
    背景SpringCloudGateway是SpringCloud退出的第二代网关框架,我们可以用它来实现反向代理,路由转发,权限校验等功能,这里介绍一个它的基础功能,通过Filter机制实现一个简单的HTTP接口处理。从总体上来看SpringCloudGateway提供的过滤器可以分为两类,一种是对全局流量都......
  • UEFI Shell 的基本操作和应用场景,适合初学者了解和入门 UEFI Shell 的使用。 UEFI She
    UEFIShell是一种提供命令行接口的环境,用于与UEFI固件进行交互。UEFI(统一可扩展固件接口)是计算机启动过程中的一种固件接口,替代了传统的BIOS。UEFIShell提供了一种方式,让用户在启动操作系统之前进行系统管理和配置。主要特点命令行界面:UEFIShell提供一个类似于操作......
  • 【easyexcel自定义模版导出,字体样式设置】
    文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言学以致用,开箱即用一、maven引包<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></dependency>......
  • 在Vue3中实现自定义指令
    一、前言我们需要明白为什么需要自定义一个指令,其实就是想更加简洁地重复使用操作DOM的逻辑,这就和组件化和组合式函数差不多。不管是Vue内置的指令还是自定义的指令,都有类似于组件的生命周期,我们可以在不同的生命周期完成不同的逻辑操作,并绑定到组件元素上,这样就产生了自定义指......
  • Lombok 使用教程-@Accessors | 自定义getters和setters的生成格式
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......