java 易错笔记

  1. 外部类配置类要想覆盖spring内部默认配置类信息,比较简单的方法是通过一个@impor注解来导入外部的配置类。
    例如:用三方pom中的线程池配置类@Import(ThreadPoolTaskConfiguration.class),来覆盖spring中默认的线程池类
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import({ThreadPoolTaskConfiguration.class, TtlMDCAdapterInitializer.class})
@Documented
public @interface EnableFWTaskExecutor {

}
  1. 使用 @ConfigurationProperties 注解时要注意,如果是自己在yaml上没有配置属性的默认值,并且自己的类中也没有属性配置默认值,而是去里面动态设置了默认值,则在nacos上刷新配置的时候,此属性的值仍然存在。
    例如:其他外部没有去配置这个类
@Getter
@Setter
@ConfigurationProperties("dingtalk.config")
public class DingTalkProperties {
  /**
   * baseUrl
   */
  private String baseServerUrl;
  
  /**
   * 这个地方去设置
   */
  @PostConstruct
  public void initConfig() {
    //nacos上改变其他类的属性值,这个类并没有被销毁,这里面的值还是存在,可以打个断点去看
    System.out.println(baseServerUrl);
    //这个地方去设置值
    baseServerUrl="http://test";
  }
}
  1. 破环单例的两种方法:1.反射;2.反序列化(主要也是反射),会反射类的无参构造方法

你可能感兴趣的:(java,笔记,spring)