依赖

             <dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version></dependency>//maven拦截resource目录文件<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><nonFilteredFileExtensions><nonFilteredFileExtension>xdb</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin>

代码

import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.lionsoul.ip2region.xdb.Searcher;import java.io.File;
import java.io.InputStream;/*** 根据ip查询地址*/
@Slf4j
public final class AddressUtil {private static Searcher searcher = null;static {try {String dbPath = AddressUtil.class.getResource("/ip2region/ip2region.xdb").getPath();File file = new File(dbPath);if (!file.exists()) {String tmpDir = System.getProperties().getProperty("java.io.tmpdir");dbPath = (tmpDir.endsWith(File.separator) ? tmpDir : tmpDir + File.separator) + "ip2region.xdb";file = new File(dbPath);String classPath = "classpath:ip2region/ip2region.xdb";InputStream resourceAsStream = ResourceUtil.getStreamSafe(classPath);if (resourceAsStream != null) {FileUtils.copyInputStreamToFile(resourceAsStream, file);}}// 1、从 dbPath 加载整个 xdb 到内存。byte[] cBuff = null;try {cBuff = Searcher.loadContentFromFile(dbPath);} catch (Exception e) {log.error("failed to load content from `%s`: %s\n", dbPath, e);}// 2、使用上述的 cBuff 创建一个完全基于内存的查询对象。try {searcher = Searcher.newWithBuffer(cBuff);} catch (Exception e) {log.error("failed to create content cached searcher: %s\n", e);}log.info("bean [{}]", searcher);} catch (Exception e) {log.error("init ip region error", e);}}private AddressUtil() {}/*** 解析IP** @param ip ip* @return 地区*/public static String getRegion(String ip) {try {//dbif (searcher == null || StrUtil.isEmpty(ip)) {log.error("Searcher is null");return StrUtil.EMPTY;}long startTime = System.currentTimeMillis();String result = searcher.search(ip);long endTime = System.currentTimeMillis();log.debug("region use time[{}] result[{}]", endTime - startTime, result);return result;} catch (Exception e) {log.error("根据ip查询地区失败:", e);}return StrUtil.EMPTY;}
}

Spring boot 集成ip2region.xdb,在jar包中的使用相关推荐

  1. spring Boot打可执行的jar包

    2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="UTF-8"?> ...

  2. 第 4-8 课:Spring Boot 集成 ElasticSearch

    ElasticSearch 是⼀个开源的搜索引擎,建⽴在⼀个全⽂搜索引擎库 Apache Lucene™ 基础之上. Lucene 可以说是当下最先进.⾼性能.全功能的搜索引擎库--⽆论是开源还是私有 ...

  3. Spring Boot 引入jar 包中的 controller

    [问题] Spring Boot 引入jar 包中的 controller [解决] 默认情况下 Spring Boot 在启动时, 只会扫描启动类对应的包以及子包进行装配, 因此jar包中的cont ...

  4. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例...

    本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...

  5. Spring Boot集成Hazelcast实现集群与分布式内存缓存

    2019独角兽企业重金招聘Python工程师标准>>> Hazelcast是Hazelcast公司开源的一款分布式内存数据库产品,提供弹性可扩展.高性能的分布式内存计算.并通过提供诸 ...

  6. Spring Boot集成CKFinder

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot集成CKFinder,实现浏览功能. 前言 上一篇记录了Spring Boot集成CKEditor,这里 ...

  7. Spring Boot 集成 Mybatis 实现双数据源

    转载自   Spring Boot 集成 Mybatis 实现双数据源 这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源 ...

  8. Spring Boot集成Redis缓存之RedisTemplate的方式

    前言 Spring Boot 集成Redis,将自动配置 RedisTemplate,在需要使用的类中注入RedisTemplate的bean即可使用 @Autowired private Redis ...

  9. ideal新建springboot工程_MyBatis初级实战之一:Spring Boot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

最新文章

  1. 人脸识别市场广 离不开政策支持及市场强劲需求
  2. eltable 无数据文案修改_有哪些适合十二月发的文艺文案?记录文案用这款图片便签...
  3. 观点 | 商汤科技联合创始人林达华:深度学习遭遇瓶颈,未来之路需要新的思考
  4. 给电脑换源 npm 国内镜像 cnpm
  5. js浏览器和浏览器插件检测的方法总结
  6. bash-高级编程--变量和参数介绍
  7. C++11库中 steady_clock , system_clock和high_resolution_clock的区别
  8. P4239 任意模数多项式乘法逆(多项式/ MTT)
  9. 线性瘤是良性吗_良性聚会:露营者如何构建开放源代码工具来解决时区
  10. spss假设检验_SPSS进行组间差异比较及其两两比较——「杏花开生物医药统计」...
  11. GhostScript命令参数详解
  12. 基于HAL库使用cubemx配置,驱动MAX30102血氧传感器基础历程
  13. gentry算法_全同态加密释疑(一):四个算法(2)
  14. Flink-电商用户行为分析(网站独立访客数(UV)的统计)
  15. JavaScript 透明背景色
  16. 《中国化工贸易》征稿函
  17. 2022安全员-C证考试题模拟考试题库及模拟考试
  18. 连花清瘟胶囊新冠应用 大健康医药·李喜贵:微量元素作用解密
  19. 语音合成论文优选:语音合成综述(2021)
  20. scanf/fscanf 的%[]和%n使用方法

热门文章

  1. python写文字冒险游戏手机版_将用户输入转换为小写文字冒险游戏python3
  2. C++实现:求坐标系中的某一点到原点的距离(使用构造函数)
  3. 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)
  4. Unix编程艺术(前言)
  5. win10WLAN无线网络找不到解决方法
  6. 宁夏银行不会破产吧_如何玩电子游戏而不会破产
  7. python量化策略源码_【Python量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码)...
  8. 读书笔记 | 6.1 金融欺诈概述
  9. .gitignore的配置与生效
  10. 哈佛计算机博士中国人有多少,《创4》选手学历曝光,哈佛、早稻田、清华都来了!却没有一个中国人...