Skip to content

写法总结

生成空数组

Collections.emptyList()

lombok导致的字段被初始化

java
@RequiredArgsConstructor
@Service
public class WecomBotService {
    String TOKEN = "p5t9wSO0pcWeJhvZMZ";

    private DifyApi difyApi;
}
  • @AllArgsConstructor 会为类生成一个包含所有字段(包括 TOKEN)的构造函数。
  • Spring 在实例化 Bean 时,会优先使用这个构造函数进行依赖注入。
  • 由于 Spring 容器中通常找不到类型为 String 且名为 TOKEN 的 Bean,如果 Spring 没有报错(可能是因为设为了非 required,或者根据上下文注入了空值),它可能会将这些 String 字段注入为 null。
  • 关键点:构造函数中的赋值操作发生在字段初始化之后。虽然字段定义时有默认值,但随后的构造函数执行时,传入的参数(可能是 null)覆盖了初始值。

方法一:改为 static final 常量(推荐,如果它们不需要动态配置) Lombok 的 @AllArgsConstructor 默认不会包含 static 字段。

方法二:使用 @RequiredArgsConstructor + final 这是 Spring 构造器注入的最佳实践。只注入需要的依赖(DifyApi),而配置项保持默认值或另外注入。

Map的初始化

Map<String, Object>
最近更新