SpringBoot自定义starter开发详细步骤说明-创新互联-成都快上网建站

SpringBoot自定义starter开发详细步骤说明-创新互联

目录
  • 一.starter工程创建
  • 二.starter工程业务开发
    • 1.数据记录的位置
    • 2.功能的触发
    • 3.业务的参数配置
    • 4.yml配置中的自动提示
  • 三.自动配置方式加载配置类
  • 四.目标工程导入starter
  • 五.启动完成业务实现

创新互联公司-专业网站定制、快速模板网站建设、高性价比青阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式青阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖青阳地区。费用合理售后完善,十载实体公司更值得信赖。一.starter工程创建

开发之前可以先看看第三方starter的格式,命名方式都是 第三方名称-spring-boot-starter
可以参考druid的开发模式,一个模块开发完,其实也可以分模块开发
在这里插入图片描述

创建一个springboot模块,模块名称就是starter名称,例如我这里的模块名称为ip_spring_boot_starter

项目整体结构,注意包名要和目标工程不一致,不然导入后,目标工程扫包会扫到一起,出现其他错误,IpProperties都自动装配上,报错出现不唯一的bean。

在这里插入图片描述

pom文件导入业务开发所需要的依赖坐标

二.starter工程业务开发

比如,我这次设计的业务是记录系统访客独立id访问次数,把开发的业务写到service中,业务开发根据目标工程的需要来编写,因人而异,这里不多说明。

1.数据记录的位置

在这里插入图片描述

2.功能的触发

比如,目标项目的方法需要实现该业务,就需要在方法中加入bean.业务方法()来调用,如果很多方法都需要实现该业务,不可能去每个方法里都加上这么一句代码。这里用拦截器实现,详情如下
在这里插入图片描述

这里我们拦截器的功能是定义好了,但是spring并没加载它,拦截器没有起作用,下面需要注册这个拦截器,在SpringMvcConfig中,做如下配置

知识点:加上注解@Configuration的配置类,@Bean创建的是代理对象,直接拿容器中已注入的bean,调用时不会再new一个新的bean

在这里插入图片描述

3.业务的参数配置

①输出频率:多久输出一次(默认10秒输出一次)
②数据特征:累计数据 / 阶段数据(默认为累计数据)
③数据格式:详细模式 / 极简模式 (默认为详细模式)
在这里插入图片描述

目标工程的yml配置文件中设置

在这里插入图片描述

ipProperties类上加上注解

在这里插入图片描述

至此ipProperties是获取到了配置的属性数据,但是还没有用到业务方法中,等于说给的属性值没起作用,接下来就要把ipProperties的配置属性值加到业务方法里,详细如下

在这里插入图片描述

4.yml配置中的自动提示

为了实现下图这种添加配置时自动提示的功能
在这里插入图片描述

业务工程的pom文件加入配置处理器的坐标
但是注意,要实现有提示功能,需要这个坐标,但是给目标工程使用时,install的时候,需要把这个坐标注释掉,因为这样jar包里有一组提示,文件里有一组提示,会出现两组提示

简单点吧,就是开发提示功能时导入这个坐标,开发完成后,install的时候,注释掉这个坐标就行了

org.springframework.bootspring-boot-configuration-processortrue

在这里插入图片描述

配置文件中的提示信息都来自ipProperties类里写的注释,但是我们还想实现这种写到最后有可选模式,就需要在spring-configuration-metadata.json中添加点东西了,hints里默认是没有值的,我们需要添加可选的代码。

在这里插入图片描述

添加内容

"hints": [
    {  "name": "tools.ip.model",
      "values": [
        {  "value": "detail",
          "description": "详细模式."
        },
        {  "value": "simple",
          "description": "极简模式."
        }
      ]

在这里插入图片描述

三.自动配置方式加载配置类

这里照搬druid的自动配置文件,改一下即可,autoconfig包创建一个自动配置类,在自动配置类中加载业务类,将它定义成bean,可以直接@Import导入也可以使用@Bean。

在这里插入图片描述
在这里插入图片描述

自动配置类

在这里插入图片描述

最后效果是加载该业务模块时,会加载spring.factories文件,加载spring.factories时会根据spring.factories里的全路径类名加载autoconfig包下的自动配置类,加载自动配置类会加载类中定义的bean,即在目标工程导入了业务的bean实现业务功能。

四.目标工程导入starter

1.先把业务工程install安装到仓库中(右侧maven,点击业务工程,install),这样目标工程才能从仓库中导入

注意:业务工程的每次功能,代码的更新就要clean再install,保证仓库里的是最新版,这样目标工程也能同步上。

2.目标工程的pom文件导入坐标,例如下

	com	ip_spring_boot_starter	0.0.1-SNAPSHOT

导入的坐标不清楚可以在业务工程的pom文件中看到,如下图
在这里插入图片描述

五.启动完成业务实现

若想在目标工程中使用业务模块的功能,除了导入坐标,还需要在使用业务模块的位置,进行自动配置,例如下

@Autowired
    private IpCountService ipCountService;//自动配置
    
    @GetMapping("{currentPage}/{pageSize}")
    public Result getPage(@PathVariable int currentPage,@PathVariable int pageSize,Book book){ipCountService.count();//调用自定义模块业务方法
       
        IPageiPage = bookService.getPage(currentPage, pageSize,book);
        //如果当前页码值大于了总页码值,那么重新执行查询操作,使用大页码值作为当前页码值
        //适用场景: 就是第3页只有一条数据,删除自动刷新后,当前页仍然是3页,但大页码已经变成2页了,可以f12详细看看
        if (currentPage>iPage.getPages()){iPage=bookService.getPage((int)iPage.getPages(),pageSize,book);
        }
        Integer code=iPage!=null?Code.GET_OK:Code.GET_ERR;
        String msg=iPage!=null?"success":"查询失败,请稍后再试";
        return new Result(code,iPage,msg);
    }

该业务实现的就是每次分页查询时,获取访问页面的ip及访问次数

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:SpringBoot自定义starter开发详细步骤说明-创新互联
标题链接:http://kswjz.com/article/coshsp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流