0、前置阅读
【疑惑整理】39_1、注解理解
1、分类
可供参考的标准有:框架类型、资源类型、类型定义、线程、值约束、权限、复写方法、返回值、自定义注解。
2、元注解
注解 | 功能 |
---|
@Target | 用于描述注解使用范围(即:被描述的注解可用在什么地方) |
@Retention | 表示需要在什么级别(源文件、class、运行时)保存该注释信息,用于描述注解生命周期(即:被描述的注解在什么范围内有效) |
@Documented | 表示使用该注解的元素应被javadoc或类似工具文档化,应用于类型声明,类型声明的注解会影响客户端对注解元素的使用 |
@Inherited | 表示一个注解类型会被自动继承,如果用户在类声明时查询注解类型,同时类声明中也没有这个类型注解,那么注解类型会自动查询该类父类,这个过程会不停地重复,直到该类型的注解被找到为止,或到达类结构的顶层(Object) |
3、Spring
注解 | 功能 |
---|
@Required | 用于bean地setter方法,表示此属性必须,配置阶段注入,否则抛出BeanInitializationException |
@Autowired | 对类成员变量、方法以及构造函数进行标注,完成自动装配。。 默认按类型装配,要求依赖对象必须存在,要允许null值,可设置required属性为false |
@Resource | 标记程序所需资源,可应用于程序组件类或其中字段/方法。容器在初始化组件时将所请求资源的实例注入程序组件 |
@Qualifier | 和@Autowired一起使用,此注解可以让你对注入过程有更多控制。可以被用在单个构造器或方法参数上 |
@Configuration | 把一个类变成配置类,其作用和xml配置文件相同,表示此bean是一个Spring配置 |
Stereotype注解:@Component可代替其他三个,因为其他三个注解是被@Component标注的。四个实质上属于同一类注解,用法、功能相同,区别在于识别组件类型。 |
---|
@Component | 表示带注释的类是“组件”。当使用基于注释的配置和类路径扫描时,这些类被视为自动检测的候选者。相当于在配置文件中配置Bean |
---|
@Controller | 处理由DispatcherServlet分发的请求,把用户请求数据经过业务处理层处理之后封装成一个Model,然后把该Model返回给对于View进行展示 |
@Service | 标注服务层,执行业务逻辑。被@Service注解的POJO类表示Service层实现 |
@Repository | 用于标注数据访问层,声明此类用于访问数据库,即DAO组件 |
4、SpringMVC
注解 | 功能 |
---|
@RequestMapping | 处理请求地址映射,指示Spring用哪个类/方法来处理请求动作 |
@ResponseBody | 将Controller方法返回结果直接写入到HTTP响应正文中(ResponseBody),一般异步获取数据时使用,通过HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区响应给客户端。使用该注解后不再用视图处理器,而是直接将数据写入到输入流中,效果等同于Response对象输出指定格式数据。 |
@PathVariable | 将请求URL中模板变量映射到功能处理方法的参数上 |
@CookieValue | 把请求Cookie数据映射到方法的参数上 |
@SessionAttributes | 允许有选择地指定Model中哪些属性需要转存到HttpSession对象中。 |
@ModelAttribute | 把请求参数绑定到Model对象 |
@RequestBody | 将http请求内容(字符串)通过HttpMessageConvert接口转换为JSON、XML等格式数据,再转换为Java对象绑定到Controller类方法参数上 |
@RequestHeader | 把请求header部分值映射到方法参数上 |
@RequestParam | 用于Spring MVC后台控制层获取参数,类似request.getParameter(“name”) |
@RequestPart | 将文件之类的multipart绑定到参数上 |
主要校验注解(Hibernate-Validator ) |
---|
@Null | 验证对象是否为 null |
---|
@NotNull | 验证对象是否不为 null |
@AssertTrue | 验证 Boolean 对象是否为 true |
@AssertFalse | 验证 Boolean 对象是否为 false |
@Max(value) | 验证 Number 和 String 对象是否小于等于指定值 |
@Min(value) | 验证 Number 和 String 对象是否大于等于指定值 |
@DecimalMax(value) | 验证注解的元素值小于等于 @DecimalMax 指定的 value 值 |
@DecimalMin(value) | 验证注解的元素值大于等于 @DecimalMin 指定的 value 值 |
@Digits(integer,fraction) | 验证字符串是否符合指定格式的数字,integer 指定整数精度,fraction 指定小数精度 |
@Size(min,max) | 验证对象长度是否在给定的范围内 |
@Past | 验证 Date 和 Calendar 对象是否在当前时间之前 |
@Future | 验证 Date 和 Calendar 对象是否在当前时间之后 |
@Pattern | 验证 String 对象是否符合正则表达式的规则 |
@NotBlank | 检查字符串是不是 Null,被 Trim 的长度是否大于 0,只对字符串,且会去掉前后空格 |
@URL | 验证是否是合法的 url |
@Email | 验证是否是合法的邮箱 |
@CreditCardNumber | 验证是否是合法的信用卡号 |
@Length(min,max) | 验证字符串的长度必须在指定范围内 |
@NotEmpty | 检查元素是否为 Null 或 Empty |
@Range(min,max,message) | 验证属性值必须在合适的范围内 |
5、MyBatis
注解 | 功能 |
---|
@Insert | 映射增SQL 语句 |
@Update | 映射改SQL 语句 |
@Delete | 映射删SQL 语句 |
@Select | 映射查SQL 语句 |
@InsertProvider | 映射增动态 SQL 语句 |
@UpdateProvider | 映射改动态 SQL 语句 |
@DeleteProvider | 映射删动态 SQL 语句 |
@SelectProvider | 映射查动态 SQL 语句 |
@Result | 列和属性或字段之间单独结果映射 |
@Results | 结果映射列表,包含一个特别结果列如何映射到属性或字段的详情 |
@One | 负责类型单独属性映射,相当于 |
@Many | 映射复杂类型的集合属性,相当于 |
@Options | 提供配置选项附加值 |
@Param | 一个注解可传入多个参数,注解可被应用于映射器的方法参数来给每个参数一个名字 |
@ResultMap | 给@Select或@SelectProvider提供XML映射的id |
@ResultType | 当使用处理器时启用此注解 |
6、Spring Boot
注解 | 功能 |
---|
@SpringBootApplication | 让Spring Boot自动给程序进行必要配置,等于@Configuration、@EnableAutoConfiguration和@ComponentScan三个配置 |
@Configuration | 相当于传统XML配置文件,可能有些第三方库需要用到XML文件,建议通过@Configuration作为项目配置主类–可通过@ImportResource注解加载XML配置文件 |
@EnableAutoConfiguration | 自动配置,尝试根据添加的JAR依赖自动配置Spring应用。也可以使用排除属性禁用 |
@ComponentScan | 定义扫描路径,从中找出标识需要装配类并自动装配到Spring的Bean容器中。同时默认加了@Controller、@Service、@Repository、@Component注解的类装配到Spring容器中。 |
@ResponseBody | 该注解修饰函数,会将结果直接填充到HTTP响应体中,一般用于构建RESTful API,一般配合@RequestMapping使用 |
@RestController | @ResponseBody和@Controller的合集 |
@Import | 用来导入其他配置类 |
@ImportResource | 用来加载XML配置文件 |
@Repository | 可确保DAO或Repositories提供异常转译,这个注解修饰DAO或repositories类会被Component发现并配置,同时也不需要为它们提供XML配置项 |
@Value | 注入Spring Boot application.properties配置的属性值 |
@Qualifier | 限定描述符除了能根据名字进行注入,但能更细力度地控制如何选择候选者 |
@Inject | 等价于@Autowired,只是没有required属性 |
7、其他
注解 | 功能 |
---|
@Transactional | 注意此注解并不激活事务行为,仅仅是一个元数据,会被一些运行时基础设施来消费。对数据库数据进行批量或连表操作时,为保证数据一致性和正确性,则需添加事务管理机制进行管理。操作失败保证所有数据回滚到原状态。 |
@Schedule | 声明方法被定时调度,注解方法返回类型是void,并且不接受任何参数 |
@Async | 声明方法会在一个单独线程中执行。可接口参数,返回值类型可为void或Future |
@ContextConfiguration | 声明测试使用配置文件,可指定加载上下文的类 |
@ExceptionHandler | 用于处理特定类或方法中异常的注释。 |
@ModelAttribute | 将方法参数或方法返回值绑定到命名模型的注释,公开给Web视图。 |
@ConditionalOnBean | 条件注解。当容器里有指定Bean条件下执行方法。 |
@ConditionalOnClass | 条件注解。当类路径下有指定类条件下执行方法。 |
@ConditionalOnExpression | 条件注解。基于SQL表达式作为判断条件。 |
@ConditionOnJava | 条件注解。基于JVM版本作为判断条件。 |
@ConditionOnWebApplication | 条件注解。当前项目是Web项目情况下执行方法。 |
@EnableAutoConfiguration | 自动载入应用程序需要的所有Bean,依赖于Spring Boot在路径中查找。 |
8、More
【分类】
1、分类整理Java注解,详细列表
【Spring注解】
2、Spring 最常用的 7 大类注解,史上最强整理!
3、Spring常用注解(收藏大全)
【Spring MVC】
4、Spring、SpringMVC中常用注解含义及用法
5、常用注解
【常见注解】
6、Spring boot注解(annotation)含义详解
7、Spring 注解大全与详解(实时更新中)
8、Spring 注解大全与详解
【MyBatis】
9、注解