Spring Boot集成ip2region教程

最近在做毕业设计,日志管理涉及到记录用户的ip和位置,就在github上找到了ip2region这个开源项目,照着官方文档做本来很简单的一个集成,但有个巨坑耽搁了我一下午时间,遂写这篇文章记录一下

  • 首先咋们引入ip2region的依赖
<dependency>
	<groupId>org.lionsoul</groupId>
	<artifactId>ip2region</artifactId>
	<version>2.6.6</version>
</dependency>
  • 然后去github上下载所需要的xdb文件
    github链接: 下载地址
    gitee链接: 下载地址
  • src/main/resources目录下新建一个目录ip2region,把刚下载好的ip2region.xdb拷贝进去
  • 然后就开始写通过IP获取地理位置的工具类AddressUtils
@Slf4j
public class AddressUtils {

    private static final String IP2REGION_TEMP_DIR = "/home/upload/";

    @SneakyThrows
    public static String getRealAddressByIP(String ip) {
        if (IpUtils.internalIp(ip)) {
            return "内网IP";
        }
        String dbPath = Objects.requireNonNull(AddressUtils.class.getResource("/ip2region/ip2region.xdb")).getPath();
        File file = new File(dbPath);
        if (! file.exists()) {
            dbPath = IP2REGION_TEMP_DIR + "ip2region.xdb";
            file = new File(dbPath);
            FileUtils.copyInputStreamToFile(Objects.requireNonNull(AddressUtils.class.getClassLoader().getResourceAsStream("classpath:ip2region/ip2region.xdb")), file);
        }
        Searcher searcher = Searcher.newWithFileOnly(dbPath);
        String result = searcher.search(ip);
        if (StrUtil.isEmpty(result)) {
            log.error("获取地理位置异常 {}", ip);
            return "XX-XX-XX";
        }
        String[] obj = result.split("\\|");
        searcher.close();
        return String.format("%s-%s-%s", obj[0], obj[2], obj[3]);
    }
}
  • 很简单的一个集成,我以为就结束了,但万万没想到,在本地跑好好的,在服务器通过jenkins构建后,返回的结果一直是null,然后就开始漫长的排查,但这玩意儿还真不好排查,本地debug走了几遍都没问题,最后都准备放弃使用这个,寻找其他的方式来获取IP位置了,然后发现了mica-ip2region这款,官方文档第一页就写着maven resources 拷贝文件是默认会做 filter,会导致我们的文件发生变化,导致不能读,pom 中你需要添加下面的配置
<plugin>
	<artifactId>maven-resources-plugin</artifactId>
	<configuration>
		<nonFilteredFileExtensions>
			<nonFilteredFileExtension>db</nonFilteredFileExtension>
		</nonFilteredFileExtensions>
	</configuration>
</plugin>
  • 这个坑我是踩扎实了,一下午时间就浪费过去了
  • 最后附上一下午的提交记录
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值