@DependsOn:控制bean初始化的顺序,保证该bean优先于依赖该bean的bean完成初始化工作;
@Scope:作用域;https://blog.youkuaiyun.com/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.youkuaiyun.com/achenyuan/article/details/72786759