Spring(Boot)中一些常用注解的基本解释
@PostConstruct 和 @PreDestroy
1.@PostConstruct说明
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
2.@PreDestroy说明
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。
参考:https://blog.csdn.net/thinkingcao/article/details/71171222
@Autowired + @Qualifier 和 @Resource
通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。
@Autowired默认按type注入。
@Qualifier会配合@Autowired使用。用处:当一个接口有多个实现的时候,为了指名具体调用哪个类的实现。
@Resource(这个注解属于J2EE的),默认按name注入,可以通过name和type属性进行选择性注入。
参考2:@Autowired @Resource @Qualifier的区别
@Component、@Controller、@Service 和 @Repository
@Component —— 定义Bean, 不好归类时使用.
@Controller("Bean的名称") —— 定义控制层Bean
@Service("Bean的名称") —— 定义业务层Bean
@Repository("Bean的名称") —— 定义DAO层Bean
(仅供参考)
@Data
需要lombok插件
@Data : 注解在类上, 为类提供读写(get、set)属性, 此外还提供了 equals()、hashCode()、toString() 方法
@Getter/@Setter : 注解在类上, 为类提供读写属性
@ToString : 注解在类上, 为类提供 toString() 方法
@Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Scope
@Mapper 和 @MapperScan
@Mapper注解:
作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
添加位置:接口类上面
@MapperScan
作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加,
@RequestBody
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)。POST。@RequestBody最多只能有一个,而@RequestParam()可以有多个。
@Valid
@RequestBody可与@Valid配合使用。
BindingResult为验证结果。
Java中一些常用注解的基本解释
java中元注解有四个: @Retention @Target @Document @Inherited
@Retention:注解的生命周期
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@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) ///包
@Documented:注解是否应当被包含在 JavaDoc 文档中。
注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中
@Inherited:是否允许子类继承该注解。
这是一个稍微复杂的注解类型. 它指明被注解的类会自动继承. 更具体地说,如果定义注解时使用了 @Inherited 标记,然后用定义的注解来标注另一个父类, 父类又有一个子类(subclass),则父类的所有属性将被继承到它的子类中
@Deprecated
表示此类或方法过时了。
@SuppressWarnings
主要用来压制 java 的警告
@ApiOperation和@ApiParam
为添加的API相关注解,个参数说明如下:
@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”);其他参数可参考源码;
@ApiParam(required = “是否必须参数”, name = “参数名称”, value = “参数具体描述”)