SpringBoot SpringBoot 原理篇 2 自定义starter 2.2 IP计数业务功能开发【自定义starter】
创始人
2024-02-21 10:01:44
0

SpringBoot

【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

SpringBoot 原理篇

文章目录

      • SpringBoot
      • SpringBoot 原理篇
      • 2 自定义starter
        • 2.2 IP计数业务功能开发【自定义starter】
          • 2.2.1 大概看看别人的starter
          • 2.2.2 直接开干
          • 2.2.3 小结

2 自定义starter

2.2 IP计数业务功能开发【自定义starter】

2.2.1 大概看看别人的starter

在这里插入图片描述

命名虽然可以随便,但是还是尽量和人家的像一点

而且,这些starter 是分成两部分的

在这里插入图片描述

这里面好像没有功能,在上面的自动配置里面

在这里插入图片描述

org → … → data → redis

在这里插入图片描述

这里面就有它的自动配置类 了

先把坐标定义出来, 然后做了一个工程

看看MP 的

在这里插入图片描述

好像也是这样哈

【咱们就一个模块搞定,像druid 那样】

在这里插入图片描述

2.2.2 直接开干

创建一个全新的SpringBoot 工程模块

在这里插入图片描述

依赖都不勾

在这里插入图片描述

直接创建,上来先把SpringBoot 的版本改掉

在这里插入图片描述

OK, 一个全新的SpringBoot 工程

大概修改一下pom 文件

不要测试依赖、也不要maven 插件

在这里插入图片描述

把测试直接拿掉了,已经无意义了

在这里插入图片描述

在这里插入图片描述

OK,结构的空壳就起来了

【业务类】

先导入web 包

org.springframework.bootspring-boot-starter-web

在这里插入图片描述

package cn.dingjiaxiong.service;import org.springframework.beans.factory.annotation.Autowired;import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;/*** ClassName: IpCountService* date: 2022/10/25 16:49** @author DingJiaxiong*/public class IpCountService {private Map ipCountMap = new HashMap();@Autowiredprivate HttpServletRequest httpServletRequest; //当前的request 对象的注入工作由使用当前starter的工程提供自动装配//调用这个方法,就可以统计ip的访问次数public void count() {System.out.println("==============================================");//每次调用当前操作,就记录当前访问的IP,然后累加访问次数//1. 获取当前操作的IP地址String ip = httpServletRequest.getRemoteAddr();//2. 根据IP地址从Map取值,并递增Integer count = ipCountMap.get(ip);if (count == null){ipCountMap.put(ip,1);}else{ipCountMap.put(ip,ipCountMap.get(ip) + 1);}}}

OK, 做业务就是这样了

【自动配置类】

package cn.dingjiaxiong.autoconfig;/*** ClassName: IpAutoConfiguration* date: 2022/10/25 17:15** @author DingJiaxiong*/public class IpAutoConfiguration {
}

【创建META-INF 的 spring.factories,让它自动配置】

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\cn.dingjiaxiong.autoconfig.IpAutoConfiguration

在这里插入图片描述

实现一下配置类

package cn.dingjiaxiong.autoconfig;import cn.dingjiaxiong.service.IpCountService;
import org.springframework.context.annotation.Bean;/*** ClassName: IpAutoConfiguration* date: 2022/10/25 17:15** @author DingJiaxiong*/public class IpAutoConfiguration {@Beanpublic IpCountService ipCountService(){return new IpCountService();}}

OK了,现在我们已经可以直接在08 SSMP 中去使用这个starter 了

不过要先安装到仓库中,【先clean 再 install】

在这里插入图片描述

OK,在08 中导入坐标

cn.dingjiaxiongip_spring_boot_starter0.0.1-SNAPSHOT

在这里插入图片描述

这样这个模块就进来了

调用一下

修改controller

@Autowired
private IpCountService ipCountService;@GetMapping("/{currentPage}/{pageSize}")
public R getPage(@PathVariable int currentPage, @PathVariable int pageSize,Book book) {ipCountService.count();IPage page = bookService.getPage(currentPage, pageSize,book);//如果当前页码值大于了总页码值,那么重新执行查询操作,使用最大页码值作为当前页码值if (currentPage > page.getPages()){page = bookService.getPage((int) page.getPages(),pageSize);}return new R(null != page, page);
}

为了更好的查看到效果

package cn.dingjiaxiong.service;import org.springframework.beans.factory.annotation.Autowired;import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;/*** ClassName: IpCountService* date: 2022/10/25 16:49** @author DingJiaxiong*/public class IpCountService {private Map ipCountMap = new HashMap();@Autowiredprivate HttpServletRequest httpServletRequest; //当前的request 对象的注入工作由使用当前starter的工程提供自动装配//调用这个方法,就可以统计ip的访问次数public void count() {//每次调用当前操作,就记录当前访问的IP,然后累加访问次数//1. 获取当前操作的IP地址String ip = httpServletRequest.getRemoteAddr();System.out.println("==============================================" + ip);//2. 根据IP地址从Map取值,并递增Integer count = ipCountMap.get(ip);if (count == null){ipCountMap.put(ip,1);}else{ipCountMap.put(ip,ipCountMap.get(ip) + 1);}}}

改了下打印

记得重新clean 、安装一下

在这里插入图片描述

OK, 直接启动SSMP

在这里插入图片描述

效果很明显,已经拿到了。OK,这就说明程序已经跑通了

OK回顾一下

业务功能开发

在这里插入图片描述

自动配置类

在这里插入图片描述

配置

在这里插入图片描述

模板调用

在这里插入图片描述

2.2.3 小结
  1. 使用自动配置加载业务功能
  2. 切记使用之前先clean后install安装到maven仓库,确保资源更新

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...