SpringBoot-注解一句话
@Configuration 启动时将该类生成bean交给Spring管理
@Bean 从方法中返回一个bean交给Spring管理,默认用方法名作为beanName,可指定name(推荐)
@Primary 存在多个bean时首选你了
@Qualifier 通过name得到一个bean,和@Autowired结合使用
@PostConstruct 我来自java,我先跑,我只跑一次
@Async 想让我干活,再给我一个线程,你可以不管我
@Controller @Service @Repositry @Mapper 分层开发web服务的几个常客
@Aspect 告诉我想额外的干些啥,我暗地里帮你搞定
根据条件注入Bean
@ConditionalOnBean 当容器有指定Bean的条件下注入
@ConditionalOnMissingBean 当容器没有指定Bean的情况下才注入
@ConditionalOnClass 当容器有指定类的条件下
@ConditionalOnMissingClass 当容器没有指定类的情况下
@ConditionalOnProperty 指定的属性是否有指定的值,如@ConditionalOnProperty(name = {"spring.kafka.jaas.enabled"})
@ConditionalOnSingleCandidate 当前指定Bean在容器中只有一个,或者虽然有多个但是指定首选Bean
@ConditionalOnExpression 基于SpEL表达式作为判断条件 @ConditionalOnExpression("'true'.equals('${redis.enable}')")
@DependsOn({"flyway","flywayInitializer"}) 用于解决flyway初始化数据库和项目中需要先执行某个逻辑时发生的顺序问题
JSON相关
@JsonProperty 用于字段属性上,在序列化和反序列化时使用value指定的属性名如 @JsonProperty("user_id") private String userId
@JsonIgnore 用于字段属性,当对象序列为json数据时候忽略该字段(结果中不包含该字段) @JsonIgnore private String password
@JsonFormat 通常用于格式化时间类型的字段格式 @JsonFormat (timezone = “GMT+8”,shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime
@JsonIgnoreProperties 和@JsonIgnore相似,作用于类或者属性上;加上ignoreUnknown=true,表示如果json字符串字段有某些字段,类里面没有,可以忽略,否则可能报错 Unrecognized field xxx
@JsonInclude 序列化设置,默认是JSONInclude.Include.ALWAYS,表示任何情况下字段都会参与序列化,其他
JsonInclude.Include.NON_NULL 当字段值为null,不序列化这个字段