<!-- https://mvnrepository.com/artifact/org.lionsoul/ip2region --><dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version></dependency>
地址:https://gitcode.com/lionsoul2014/ip2region/overview
将数据文件下载下来放到resources:
public class IPUtil {/*** 将整个xdb文件加载到内存中*/private final static Searcher SEARCHER;static {try {ClassPathResource resource = new ClassPathResource("ip2region.xdb");String path = resource.getURL().getPath();byte[] cBuff = Searcher.loadContentFromFile(path);SEARCHER = Searcher.newWithBuffer(cBuff);} catch (Exception e) {throw new RuntimeException("初始化ip2region.xdb异常!");}}/*** @Description 获取ip地址信息* @param ipStr 192.168.0.1* @Throws * @Return java.util.List<java.lang.String> 返回结果形式(国家|区域|省份|城市|ISP)* @Date 2024-03-08 17:43:45* @Author WangKun*/public static List<String> getIpAddress(String ipStr) {return getIpAddress(ipStr, null);}/*** @Description 获取ip地址信息* @param ipStr ip 经过转换后的* @param index * @Throws* @Return java.util.List<java.lang.String> * @Date 2024-03-08 17:43:51* @Author WangKun*/public static List<String> getIpAddress(String ipStr, int[] index) {try {long ip = Searcher.checkIP(ipStr);return getIpAddress(ip, index);} catch (Exception e) {throw new RuntimeException("ip解析为long系统异常!");}}/*** @Description 获取ip地址信息* @param ip* @param index* @Throws * @Return java.util.List<java.lang.String> * @Date 2024-03-08 17:43:55* @Author WangKun*/public static List<String> getIpAddress(Long ip, int[] index) {//获取xdb文件资源List<String> regionList = new ArrayList<>();try {String region = SEARCHER.search(ip);String[] split = region.split("\\|");if (index == null) {regionList = Arrays.asList(split);} else {for (int i : index) {regionList.add(split[i]);}}//关闭资源SEARCHER.close();} catch (Exception e) {throw new RuntimeException("ip解析地址异常!");}return regionList;}}