JAVA 注解
Posted 富兰克林_YY
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 注解相关的知识,希望对你有一定的参考价值。
@MapperScan
指定接口文件所在的根包
@Configuration
用于定义配置类,可替换XML配置文件,被注解的类内部包含一个或多个@Bean注解方法
@Component
标注一个类为Spring容器的Bean,(把普通pojo实例化到spring容器中,相当于配置文件中的)
@Service
用来表示Service层(服务层)
@Controller
用来表示Controlle层(控制层)
@Configuration
用来表示Configuration层 (配置层)
作用:被@controller
、@service
、@repository
、@component
注解的类,都会把这些类纳入进spring容器中进行管理。作用相同,只是不同的名字表示不同的层,通过这样可以见名知义
而@Service
,@Controller
,@Configuration
其实里面有含有@Component
并且都可以替换成@Component
。因为我们习惯于存在分层观念,即,不同层表示不同的功能,于是,就出现了@Service
,@Controller
,@Configuration
。用来去替换Component。即见名知义。
@Bean
一类是注册Bean,@Component
, @Repository
, @Controller
, @Service
, @Configration
这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired
, @Resource
配合到一起,把对象、属性、方法完美组装。
@SpringBootTest
注解,并在类中编写测试方法
@Test
注解 测试方法
Lombok的常用注解有:
@Data
:添加在类上,可在编译期生成全部属性对应的Setters & Getters、hashCode()
与equals()
、toString()
,使用此注解时,必须保证当前类的父类存在无参数构造方法@Setter
:可以添加在属性上,将仅作用于当前属性,也可以添加在类上,将作用于类中所有属性,用于生成对应的Setter方法@Getter
:同上,用于生成对应的Getter方法@EqualsAndHashCode
:添加在类上,用于生成规范的equals()
和hashCode()
,关于equals()
方法,如果2个对象的所有属性的值完全相同,则返回true
,否则返回false
,关于hashCode()
也是如此,如果2个对象的所有属性的值完全相同,则生成的HashCode值相同,否则,不应该相同@ToString
:添加在类上,用于生成全属性对应的toString()
方法@Slf4j
:添加在类上,???
如果要解决IntelliJ IDEA错误的提示,可以:
- 使用
@Resource
注解替换@Autowired
注解- 不推荐,只要是使用自动装配,都应该使用
@Autowired
注解
- 不推荐,只要是使用自动装配,都应该使用
- 不再使用
@MapperScan
来指定Mapper接口的包,而改为在各Mapper接口上添加@Mapper
注解- 不推荐,使用
@MapperScan
是一劳永逸的做法,更加省事
- 不推荐,使用
- 在各Mapper接口上添加
@Repository
注解- 推荐
- 与添加
@Mapper
注解的本质不同,添加@Mapper
注解是为了标识此接口是Mybatis框架应该处理的接口,添加@Repository
注解是为了引导IntelliJ IDEA作出正确的判断
@Slf4j
注解,则Lombok框架会在编译期生成名为log
的变量,可调用此变量的方法来输出日志。
trace
:跟踪信息,可能包含不一定关注,但是包含了程序执行流程的信息debug
:调试信息,可能包含一些敏感内容,比如关键数据的值info
:一般信息warn
:警告信息error
:错误信息
@RestControllerAdvice
注解,添加了此注解的类中的特定方法将作用于整个项目任何处理请求的方法的过程!
@RequestMapping
注解,以配置请求路径与处理请求的方法的映射关系。@RequestMapping
配置了路径后,实践使用的路径应该是这2个路径值结合起来的路径值,而@RequestMapping
在处理时,会自动处理两端必要的、多余的/
符号。
@PathVariable
RESTful风格 可以使用自定义名称
作为占位符,并且,在方法的参数列表中,自定义参数接收此变量值,在参数前还需要添加@PathVariable
注解
-
@Api
:添加在控制器类上,通过此注解的tags
属性,可以指定模块名称,并且,可以在模块名称前自行添加数字序号,以实现排序效果,框架会根据各控制器类上@Api
注解的``tags`属性值进行升序排列 -
@ApiOperation
:添加在处理请求的方法上,通过此注解的value
属性,可以指定业务名称 -
@ApiOperationSupport
:添加在处理请求的方法上,通过此注解的order
属性(数值型),可以指定排序序号,框架会根据此属性值升序排列 -
@ApiModelProperty
:添加在POJO类型的属性上,通过此注解的value
属性可以配置请求参数的名称,通过此注解的required
属性可以配置是否必须提交此请求参数(注意:此项配置值并不具备任何检查效果) -
@ApiImplicitParam
:添加在处理请求的方法上,适用于请求参数不是POJO类型时,必须配置此注解的name
属性,取值为请求参数的名称,表示当前注解是对哪个请求参数进行配置,然后,通过此注解的value
属性可以配置请求参数的名称,通过此注解的required
属性可以配置是否必须提交此请求参数(注意:此项配置值并不具备任何检查效果)。通过此注解的dataType
属性配置请求参数的数据类型,常见取值有:string
、long
等 -
@ApiImplicitParams
:添加在处理请求的方法上,适用于请求参数不是POJO类型,且需要配置的参数的数量超过1个时,需要配置此注解的value
属性,值是@ApiImplicitParam
注解的数组类型,例如:
@RequestBody
注解时,则客户端提供的请求参数必须是对象格式的 当请求参数没有添加@RequestBody
注解时,则客户端提供的请求参数必须是FormData格式的
@ExceptionHandler注解我们一般是用来自定义异常的。
@Valid
或@Validated
在控制器中,对于封装类型的请求参数,应该先在请求参数之前添加@Valid
或@Validated
注解,表示将需要对此请求参数的格式进行检查
@NotNull
注解,此注解表示“不允许为null
值”
@Validated
当处理请求的方法的参数是未封装的(例如Long id
等),检查时,需要:- 在当前控制器类上添加@Validated
注解- 在需要检查的请求参数上添加检查注解
@Range(min = 1, message = "删除相册失败,尝试删除的相册的ID无效!") @PathVariable Long id
@NotNull
:不允许为null
@Range
:此注解有min
和max
属性,分别通过@Min
和@Max
实现,且min
的默认值为0
,max
的默认值为long
类型的最大值,此注解只能添加在整型的数值类型上,用于设置取值区间@NotEmpty
:不允许为空字符串,即长度为0的字符串,此注解只能添加在字符串类型的参数上@NotBlank
:不允许为空白,即不允许是仅由空格、TAB制表位、换行符等空白字符组成的值,此注解只能添加在字符串类型的参数上@Pattern
:此注解有regexp
属性,可通过此属性配置正则表达式,在检查时将根据正则表达式所配置的规则进行检查,此注解只能添加在字符串类型的参数上
@Transactional
注解,即可使得此方法是事务性的
@Param
注解,以配置参数的名称
-
@ComponentScan
,当加载此配置类时,就会激活组件扫描 -
可以配置
@ComponentScan
的参数,此参数应该是需要被扫描的根包(会扫描所配置的包,及其所有子孙包),且此注解参数的值是数组类型的 -
@Component
:通用注解 -
@Controller
:控制器类的注解@RestController
:仅添加Spring MVC框架后可使用@ControllerAdvice
:仅添加Spring MVC框架后可使用@RestControllerAdvice
:仅添加Spring MVC框架后可使用
-
@Service
:Service这种业务类的注解 -
@Repository
:处理数据源中的数据读写的类的注解
@Scope("prototype")
使得被Spring管理的对象是“非单例的”
@Qualifier
注解是用于配合自动装配机制的,单独使用没有意义
@RequestParam
:此注解可以用于:修改请求参数的名称(没有太多实用价值),强制要求必须提交此参数(可以通过Validation框架的@NotNull
实现同样效果),设置请求参数的默认值(适用于允许客户端不提交此请求参数时)@PathVariable
:当URL中设计了占位符参数时,必须在对应的方法参数上添加此注解,以表示此参数的值来自URL中的占位符位置的值,如果占位符中的名称与方法参数名称不匹配,可以通过此注解的参数来配置@RequestBody
:当方法的参数添加了此注解时,客户端提交的请求参数必须是对象格式的,当方法的参数没有添加此注解时,客户端提交的请求参数必须是FormData格式的
@EnableScheduling
在Spring Boot项目中,需要在配置类上添加@EnableScheduling
注解,以开启计划任务,否则,当前项目中所有计划任务都是不允许执行的!
@Scheduled
在任何组件类中,自定义方法,在方法上添加@Scheduled
注解,则此方法就是计划任务,通过此注解的参数可以配置计划任务的执行规律。
以上是关于JAVA 注解的主要内容,如果未能解决你的问题,请参考以下文章