mirror of
https://gitee.com/many2many/java-web.git
synced 2025-01-11 14:40:55 +08:00
edit
This commit is contained in:
parent
c718d46fa5
commit
49757a4d90
@ -44,49 +44,47 @@
|
||||
|
||||
参考[java注解是怎么实现的?](https://www.zhihu.com/question/24401191)
|
||||
|
||||
- **定义**:
|
||||
> java注解又叫做java标注,是java的一种注释机制,在jdk5.0引入。其可以作用在类、方法、变量、参数和包上。注解是用于向编译器或框架提供元数据的一种机制。
|
||||
- **注解定义的语法**
|
||||
> 注解 (Annotation),也叫元数据。一种代码级别的说明。它是 JDK1.5 及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
|
||||
>
|
||||
> ——摘自百度百科
|
||||
|
||||
> 元数据: 说明数据的数据
|
||||
|
||||
**注解定义的语法**
|
||||
```java
|
||||
public @interface 注解名称{
|
||||
属性列表;
|
||||
}
|
||||
```
|
||||
- **类型**:
|
||||
- **元注解**: 用于修饰其他注解。
|
||||
- **内置注解**: 如`@Override`, `@Deprecated`, `@SuppressWarnings`等。
|
||||
- **自定义注解**: 自定义注解就是我们自己写的注解,来满足特定需求。
|
||||
- **第三方框架定义的注解**: 比如SpringMVC的@Controller等,也可归于自定义注解。
|
||||
- **使用场景**:
|
||||
- **元数据**: 为框架提供元数据。
|
||||
- **代码生成**: 用于生成代码。
|
||||
- **编译时处理**: 用于编译时的代码处理。
|
||||
**类型**:
|
||||
- **元注解**: 用于注解其他注解的注解,如@Retention和@Target。
|
||||
- **内置注解**: Java平台提供的注解,如`@Override`, `@Deprecated`, `@SuppressWarnings`等。
|
||||
- **自定义注解**: 我们自己写的注解。 很多第三方框架通过提供自定义注解来简化实现, 如spring框架提供了`@Autowired`、`@RequestMapping`等。
|
||||
**使用场景**:
|
||||
- 为框架提供元数据,例如Spring框架使用注解来标记组件。
|
||||
- 用于代码生成,例如Lombok库使用注解来自动生成模板化的代码。
|
||||
- 用于编译时处理,例如通过注解来检查代码中的潜在错误。
|
||||
|
||||
- **使用位置**
|
||||
**使用位置**
|
||||
|
||||
实际开发中,注解常常出现在类、方法、成员变量、形参位置。当然还有其他位置。
|
||||
在实际开发中,注解可以出现在类、方法、成员变量、方法参数等多个位置。
|
||||
|
||||
- **作用**
|
||||
**作用**
|
||||
|
||||
如果说注释是写给人看的,那么注解就是写给程序看的。它更像一个标签,贴在一个类、一个方法或者字段上。它的目的是为当前读取该注解的程序提供判断依据及少量附加信息。比如程序只要读到加了@Test的方法,就知道该方法是待测试方法,又比如@Before注解,程序看到这个注解,就知道该方法要放在@Test方法之前执行。有时我们还可以通过注解属性,为将来读取这个注解的程序提供必要的附加信息,比如@RequestMapping("/user/info")提供了Controller某个接口的URL路径。
|
||||
如果说注释是写给人看的,那么注解就是写给程序看的。它更像一个标签,贴在一个类、一个方法或者字段上。它的目的是为当前读取该注解的程序提供判断依据及少量附加信息。例如:
|
||||
- @Test 标记一个方法为测试方法。
|
||||
- @Before 标记一个方法在每个测试方法之前执行。
|
||||
- @RequestMapping("/user/info") 提供 Controller 所对应的某个 URL 路径。
|
||||
|
||||
- **级别**
|
||||
**级别**
|
||||
|
||||
注解和类、接口、枚举是同一级别的。注解的本质@interface和interface从名字上看非常相似。
|
||||
注解与类、接口、枚举处于同一级别。注解的本质类似于 @interface,与 interface 相似,但用于提供元数据。
|
||||
|
||||
- **注解三角**
|
||||
- 定义注解
|
||||
- 使用注解
|
||||
- 读取注解
|
||||
**注解三角**
|
||||
- 定义注解: 创建注解。
|
||||
- 使用注解: 在代码中应用注解。
|
||||
- 读取注解: 通过反射或其他机制读取并处理注解。
|
||||
|
||||
|
||||
**小结**
|
||||
|
||||
- 注解就像标签,是程序判断执行的依据。比如,程序读到@Test就知道这个方法是待测试方法,而@Before的方法要在测试方法之前执行
|
||||
- 注解需要三要素:定义、使用、读取并执行
|
||||
- 注解分为自定义注解、JDK 内置注解和第三方框架注解。自定义注解需要开发者自己定义、使用和读取,而 JDK 内置注解和第三方注解通常只需要使用,定义和读取由框架或工具完成
|
||||
|
||||
#### 5.1.3 Optional的介绍和使用(了解)
|
||||
### 5.1.3 `Optional` 的介绍和使用(了解)
|
||||
|
||||
#### 定义
|
||||
|
Loading…
Reference in New Issue
Block a user