0 注解 通用
0.1 java.lang
- @Deprecated 方法不再建议使用
1 注解 SpringBoot
1.1 SpringBoot注解
- @ExceptionHandler 可以对指定异常进行拦截https://www.cnblogs.com/1446358788-qq/p/14296122.html
- @RestControllerAdvice =@ControllerAdvice +@ResponseBodyhttps://blog.csdn.net/hyk521/article/details/104990636
- @Retention(RetentionPolicy.RUNTIME) 常用在注解类,标注作用时间(运行时)https://www.cnblogs.com/1446358788-qq/p/14296120.html
- @Target({ElementType.TYPE,ElementType.METHOD}) 常用在注解类,标注作用范围(类和方法)https://www.cnblogs.com/1446358788-qq/p/14296120.html
@Around 注解 环绕增强
@Valid 用于验证注解是否符合要求,直接加在变量user之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。
@Autowired 的作用是什么?
@Autowired 是一个注释,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。
@Autowired 默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。
@PostConstruct注解 仔细看
https://blog.csdn.net/qq360694660/article/details/82877222
@Value 注解可以用来将外部的值动态注入到 Bean 中,在 @Value 注解中,可以使用 ${} 或 #{}。${} 与 #{} 的区别如下: https://www.hxstrive.com/article/854.htm
(1)@Value("${}"):可以获取对应属性文件中定义的属性值。
(2)@Value("#{}"):表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。
2 注解 LomBok
2.1 LOMBOK常用注解
- @AllArgsConstructor //有参构造https://www.cnblogs.com/1446358788-qq/p/14296120.html
- @Data //get,set方法https://www.cnblogs.com/1446358788-qq/p/14296120.html
- @NoArgsConstructor //无参构造https://www.cnblogs.com/1446358788-qq/p/14296120.html
- @Builder //建造者模式,不允许私有构造https://www.jianshu.com/p/d08e255312f9
- @ToString //打印对象 参考:https://baijiahao.baidu.com/s?id=1657872129750062167&wfr=spider&for=pc
2.2 LomBok @Builder注解demo
package com.ddwei.test.dto; import lombok.Builder; import lombok.Data; @Data @Builder public class StudentDto { private String id; private String name; }
package com.ddwei.test.normal; import com.ddwei.test.dto.StudentDto; import org.junit.Test; public class BuilderTest { @Test public void testBuilder(){ StudentDto studentDto = StudentDto.builder().id("001").name("小明").build(); } }
2.3 LomBok @Builder 继承 问题解决
父类:
package com.ddwei.test.dto; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @AllArgsConstructor @Getter @Setter public class Person { private String age; private String name; }
子类:
package com.ddwei.test.dto; import lombok.Builder; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Teacher extends Person{ private String school; @Builder public Teacher(String age, String name, String school) { super(age, name); this.school = school; } }
实现类:
package com.ddwei.test.normal; import com.ddwei.test.dto.Person; import com.ddwei.test.dto.Teacher; import com.github.houbb.bean.mapping.core.util.BeanUtil; import org.junit.Assert; import org.junit.Test; public class BuilderTest2 { @Test public void testBuilder(){ Teacher teacher = Teacher.builder().age("33").school("北京一中").build(); Person person = new Person("32","小王"); BeanUtil.copyProperties(person,teacher); System.out.println(teacher.getSchool()+" "+teacher.getName()+" "+teacher.getAge()); Assert.assertEquals("32",teacher.getAge()); } }
参考:https://blog.csdn.net/m0_43426835/article/details/121975147
3 注解 Junit
3.1 Junit 常用注解
@DisplayName 自定义名称
4 注解 JSR
4.1 JSR常用注解
@NotNull 不允许为空
@Valid 用于验证注解是否符合要求,直接加在变量之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息。
参考:https://blog.csdn.net/weixin_38118016/article/details/80977207/
5 注解类编写
5.1 Demo(Springcloud课程)
相关链接:https://www.cnblogs.com/1446358788-qq/p/14296120.html
package com.imooc.coupon.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 忽略统一响应定义 */ @Target({ElementType.TYPE,ElementType.METHOD})//当前注解可以定义到类或者方法上 @Retention(RetentionPolicy.RUNTIME)//在何时起作用?运行时起作用 public @interface IgnoreResponseAdvice { }
6 注解类应用
6.1 如何判断某个类或者方法是否添加某个注解?
相关链接调用:https://www.cnblogs.com/1446358788-qq/p/14296120.html#_label3
if(methodParameter.getDeclaringClass().isAnnotationPresent(IgnoreResponseAdvice.class)
||
methodParameter.getMethod().isAnnotationPresent(IgnoreResponseAdvice.class)){
浙公网安备 33010602011771号