spring 常用注解解释

@DependsOn:控制bean初始化的顺序,保证该bean优先于依赖该bean的bean完成初始化工作;

@Scope:作用域;https://blog.csdn.net/tiantiandjava/article/details/40826905

https://www.cnblogs.com/lonecloud/p/5937513.html

@Qualifier("XXX"):通过名字来匹配对应的bean,防止bean的歧义,比如多数据源的配置;

@Primary:当出现多个相同实例时,spring不知道调用哪一个,加上该注解后,该实例为spring默认调用的实例,解决实例冲突的问题;

@Lazy:主要用于修饰Spring Bean类,用于指定该Bean的预初始化行为,使用该注解时可以指定一个bool类型的值,该属性决定是否预初始化这个Bean。如果该值为true,则表示该Bean不会预初始化;

@JsonIgnore:用于在生成json数据格式时忽略被该注解使用的对象或属性;

@JsonInclude :在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json,例如只有属性不为 null 时。

@Overrride:方法重写;

@Value:@Value("name")从配置文件中取值;

@PostConstruct:在构造方法和init方法(如果有的话)之间得到调用,且只会执行一次。

@PreDestory:注解的方法在destory()方法调用后得到执行。

@ResponseStatus:返回状态信息;

@RestController:=@Controller + @ResponseBody

@ControllerAdvice:定义全局异常处理类;

@ExceptionHandler:注解声明异常处理方法;

@Order:执行顺序,值越小,优先级越高

 

 @GetMapping:等价于@RequestMapping( method = RequestMethod.GET)

 @PostMapping:等价于@RequestMapping(method = RequestMethod.POST)

元注解:主要负责注解其他注解,包括自定义注解,主要包括:

@Target:用于描述注解的使用范围;取值(ElementType)有:

    1.CONSTRUCTOR:用于描述构造器
    2.FIELD:用于描述域
    3.LOCAL_VARIABLE:用于描述局部变量
    4.METHOD:用于描述方法
    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述参数
    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

@Retention:用于描述注解的使用范围(即:被描述的注解可以用在什么地方);取值(RetentionPoicy)有:

    1.SOURCE:在源文件中有效(即源文件保留)
    2.CLASS:在class文件中有效(即class保留)
    3.RUNTIME:在运行时有效(即运行时保留)

@Documented:用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

@Inherited:元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。如果我们使用java.lang.reflect去查询一个@Inherited annotation类型的annotation时,反射代码检查将展开工作:检查class和其父类,直到发现指定的annotation类型被发现,或者到达类继承结构的顶层。

自定义注解
定义注解格式:
  public @interface 注解名 {定义体}
注解参数的可支持数据类型:
    1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
    2.String类型
    3.Class类型
    4.enum类型
    5.Annotation类型
    6.以上所有类型的数组
Annotation类型里面的参数该怎么设定: 
  第一,只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为defaul默认类型;   
  第二,参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和 String,Enum,Class,annotations等数据类型,以及这一些类型的数组.例如,String value();这里的参数成员就为String;  
  第三,如果只有一个参数成员,最好把参数名称设为"value",后加小括号.例:下面的例子FruitName注解就只有一个参数成员。

@constraint:自定义注解的验证策略;

@controller: 控制器(注入服务)

@service: 服务(注入dao)

@repository: dao(实现dao访问)

@component: (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)

@InitBinder:可以对 WebDataBinder 对象进行初始化。WebDataBinder 是 DataBinder 的子类,用于完成由表单字段到 JavaBean 属性的绑定 
• @InitBinder方法不能有返回值,它必须声明为void。 
• @InitBinder方法的参数通常是是 WebDataBinder

以后碰到再慢慢加

详见https://blog.csdn.net/achenyuan/article/details/72786759

关于元注解:https://www.cnblogs.com/gmq-sh/p/4798194.html

猜你喜欢

转载自blog.csdn.net/xx1qaz/article/details/80901981