一些java注解

@Test

测试

@primary

有该注解的接口实现优先装配

@PostConstruct

这个方法将会在构造器之后调用

@PreDestroy

在销毁对象之前调用该方法

@Scope(“singleton”) / @Scope(“prototype”)

spring默认是单例模式,singleton不用写
prototype可以让每次实例化都是不同的对象
通常都是单例模式

@Controler

处理请求的组件

@Repository / @Repository(“<name>”)

数据库访问的组件

@Service

如果是业务组件,用service标明

@Component

通用

@Configuration

说明本类是配置类

@Bean

将该方法声明为第三方bean

@Autowired

@Qualifier(“<name>”)

依赖注入(Dependency Injection)

@Autowired
@Qualifier("alphaService")	// 如果不加这句话就是将AlphaDao注入

private AlphaDao alphaDao;	// spring容器将AlphaService注入alphaDao属性

@ResponseBody

加上表示返回的是个字符串,不加就是html文件

@EqualsAndHashCode

  1. 此注解会生成equals(Object other) 和 hashCode()方法。

  2. 它默认使用非静态,非瞬态的属性

  3. 可通过参数exclude排除一些属性

  4. 可通过参数of指定仅使用哪些属性

  5. 它默认仅使用该类中定义的属性且不调用父类的方法

  6. 可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。@EqualsAndHashCode(callSuper=true)

@Data

相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。

@RequiredArgsConstructor

在我们写controller或者Service层的时候,需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的@Autowired注解,代码看起来很乱, lombok提供了一个该注解写在类上可以代替@Autowired注解,需要注意的是在注入时需要用final定义,或者使用@notnull注解。

@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
@EqualsAndHashCode
class SubAddress implements Address{
    @Getter(AccessLevel.PACKAGE) @Nonnull private final Address parentAddress;
    @Getter(AccessLevel.PACKAGE) @Nonnull private final String id;
}

{@link xxx}

link后面可以跟类/方法/网址
按住command+鼠标左边点击link后的名字可以直接跳转

四个元注解

@Retention(RetentionPolicy.xxx)

注解的注解,指明注解的生命周期,具体的生命周期的长短由RetentionPolicy决定

  • RetentionPolicy.SOURCE:表示注解只保留在源文件,当java文件编译成class文件,就会消失。如@override
  • RetentionPolicy.Class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
  • RetentionPolicy.Runtime:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在。需要在运行时去动态获取注解信息

@Target()

@Target用来表示注解作用范围,超过这个作用范围,编译的时候就会报错。

@Target(ElementType.TYPE)——接口、类、枚举、注解
@Target(ElementType.FIELD)——字段、枚举的常量
@Target(ElementType.METHOD)——方法
@Target(ElementType.PARAMETER)——方法参数
@Target(ElementType.CONSTRUCTOR) ——构造函数
@Target(ElementType.LOCAL_VARIABLE)——局部变量
@Target(ElementType.ANNOTATION_TYPE)——注释
@Target(ElementType.PACKAGE)——包,用于记录java文件的package信息

@Document

生成文档时要不要带该注解

@Inherited

决定子类要不要集成父类的注解

获取注解

Method.getDeclaredAnnotations();
Method.getAnnotation(Class<T> annotationClass);		//

ControllerAdvice

用于修饰类,表示该类是Controller的全局配置类。
在此类中,可以对Controller做以下三种全局配置:异常处理方案、绑定数据方案、绑定参数方案

ExceptionHandler

用于修饰方法,该方法会在Controller出现异常后被调用,用于处理捕获到的异常

ModelAttribute

用于修饰方法,该方法会在Controller方法执行前被调用,用于为Model对象绑定参数

DataBinder

用于修饰方法,该方法会在Controller方法执行前被调用,用于绑定参数的转换器

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值