其实我不太喜欢宁波这个地方

原因是

1、本人开车 公路旁停车位 发现一个车位 正在后倒车入库了 咔嚓一辆车直着开进去 车位被抢

2、租房时遇到房东歧视人 当时租房时 看好房子了 需要押一付三 但是身上钱不够 钱在老婆那里 我就说要不我先加你微信我晚点把钱打给你 然后就听到:一大小伙身上竟然拿不出...

哎,对宁波无感啊!!

springboot配置了 addResourceHandler 但是不能直接访问zip包

  @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
        /** cms静态资源预览文件路径 */
        registry.addResourceHandler(ContentCoreConsts.RESOURCE_PREVIEW_PREFIX + "**")
                .addResourceLocations("file:" + getResourceRoot());
     
    }
    

springboot 配置了 addResourceHandler 但是不能通过连接 直接直接访问zip包

因为我的访问被拦截了 所以还要放一下

CHATGPT回答:

解决springboot整合es8.6.2抛出ClassNotFoundException: jakarta.json.spi.JsonProvider

解决依赖版本问题和冲突:

<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.6.2</version>
    <exclusions>
        <exclusion>
            <artifactId>jakarta.json-api</artifactId>
            <groupId>jakarta.json</groupId>
        </exclusion>
        <exclusion>
            <artifactId>elasticsearch-rest-client</artifactId>
            <groupId>org.elasticsearch.client</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>8.6.2</version>
</dependency>
<dependency>
    <groupId>jakarta.json</groupId>
    <artifactId>jakarta.json-api</artifactId>
    <version>2.1.2</version>
</dependency>
<dependency>
    <groupId>jakarta.json.bind</groupId>
    <artifactId>jakarta.json.bind-api</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>3.0.3</version>
    <exclusions>
        <exclusion>
            <artifactId>jakarta.json-api</artifactId>
            <groupId>jakarta.json</groupId>
        </exclusion>
        <exclusion>
            <artifactId>jakarta.json.bind-api</artifactId>
            <groupId>jakarta.json.bind</groupId>
        </exclusion>
        <exclusion>
            <artifactId>parsson</artifactId>
            <groupId>org.eclipse.parsson</groupId>
        </exclusion>
    </exclusions>
</dependency>

springboot 国际化处理

package com.ruoyi.common.i18n;

import java.lang.reflect.Field;
import java.util.List;
import java.util.Locale;
import java.util.Objects;

import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.util.PropertyPlaceholderHelper;

import com.ruoyi.common.utils.ReflectASMUtils;
import com.ruoyi.common.utils.SpringUtils;
import com.ruoyi.common.utils.StringUtils;

public class I18nUtils {

    private final static MessageSource messageSource = SpringUtils
            .getBean(AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME);

    private static final PropertyPlaceholderHelper FieldPlaceholderHelper = new PropertyPlaceholderHelper("#{", "}");

    private static final PropertyPlaceholderHelper PlaceholderHelper = new PropertyPlaceholderHelper("{", "}", ":",
            true);

    public static void replaceI18nFields(List<?> objs) {
        replaceI18nFields(objs, LocaleContextHolder.getLocale());
    }

    /**
     * 将列表所有对象中@I18nField标注的字段替换为指定国际化语言值
     * 
     * @param objs
     * @param locale
     */
    public static void replaceI18nFields(List<?> objs, Locale locale) {
        if (Objects.isNull(objs)) {
            return;
        }
        objs.forEach(obj -> replaceI18nFields(obj, locale));
    }

    public static void replaceI18nFields(Object obj) {
        replaceI18nFields(obj, LocaleContextHolder.getLocale());
    }

    /**
     * 将对象有@I18nField标注的字段替换为指定国际化语言值
     * 
     * @param obj
     * @param locale
     */
    public static void replaceI18nFields(Object obj, Locale locale) {
        if (Objects.isNull(obj)) {
            return;
        }
        Field[] declaredFields = obj.getClass().getDeclaredFields();
        for (Field field : declaredFields) {
            if (field.isAnnotationPresent(I18nField.class)) {
                I18nField i18nField = field.getAnnotation(I18nField.class);
                try {
                    if (StringUtils.isNotEmpty(i18nField.value())) {
                        String langStr = i18nField.value();
                        // 先将#{fieldName}占位替换为obj字段值
                        langStr = FieldPlaceholderHelper.replacePlaceholders(langStr, placehoderName -> {
                            Object fieldV = ReflectASMUtils.invokeGetter(obj, placehoderName);
                            return Objects.nonNull(fieldV) ? fieldV.toString() : StringUtils.EMPTY;
                        });
                        String langValue = get(langStr, locale);
                        ReflectASMUtils.invokeSetter(obj, field.getName(), langValue);
                    } else {
                        Object fieldV = ReflectASMUtils.invokeGetter(obj, field.getName());
                        if (Objects.nonNull(fieldV)) {
                            String langKey = fieldV.toString();
                            String langValue = get(langKey, locale);
                            ReflectASMUtils.invokeSetter(obj, field.getName(), langValue);
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 获取国际化键名对应的当前默认语言值
     * 
     * @param str
     * @return
     */
    public static String get(String str) {
        return get(str, LocaleContextHolder.getLocale());
    }

    /**
     * 获取国际化键名指定的语言值
     * 
     * @param str
     * @param locale
     * @param args
     * @return
     */
    public static String get(String str, Locale locale, Object... args) {
        if (StringUtils.isEmpty(str)) {
            return str;
        }
        return PlaceholderHelper.replacePlaceholders(str, langKey -> messageSource.getMessage(langKey, args, locale));
    }
}
package com.jinw.cms.i18n;

import com.jinw.utils.cms.StringUtils;

import java.lang.annotation.*;

/**
 * 类字段添加此注释,根据国际化字典表获取当前语言环境翻译.@see I18nUtils.replaceI18nFields
 *
 * @author liux
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface I18nField {

    /**
     * 国际化表键名,为空时使用字段值获取当前语言环境值
     * <p>
     * 可使用占位符来获取当前对象其他字段属性值,例如实体类的ID字段值,可使用#{fieldName},大括号内是字段名,会被替换为指定字段的值。
     * </p>
     */
    public String value() default StringUtils.EMPTY;
}

spring:
  # 资源信息
  messages:
    encoding: utf-8
    # 国际化资源文件路径(配置文件路径)
    basename: i18n/messages

IDEA2019 Gradle本地仓库第三方Jar包存放位置


Gradle本地仓库第三方Jar包存放位置

一、修改Gradle本地仓库位置

1、选择一个路径作为Gradle本地仓库位置

例如:D://GradleRepository

2、添加环境变量,将上面的路径添加到环境变量中
、在D://GradleRepository目录下在创建个 .gradle 文件夹

4、修改IDEA的gradle仓库使用本地仓库