@Named注解源码分析

master
xuchengsheng 2023-10-20 15:47:04 +08:00
parent 75867ad4e3
commit d852626476
1 changed files with 3 additions and 3 deletions

View File

@ -47,7 +47,7 @@ public @interface Named {
1. **Bean标识**
+ `@Named` 注解可以为一个类提供一个名称使得这个类可以被识别并管理为一个bean。这样这个bean就可以在其他地方通过这个名称被引用和注入。
2. **替代默认命名**
+ 默认情况下没有具体指定名称的bean会使用其类名的首字母小写形式作为其名称。使用 `@Named`可以`value`属性来覆盖这个默认名称。
+ 默认情况下没有具体指定名称的bean会使用其类名的首字母小写形式作为其名称。使用 `@Named`我们可以`value`属性来覆盖这个默认名称。
3. **解决歧义性**
+ 在依赖注入中有时候可能有多个bean都符合某个注入点的要求。在这种情况下`@Named` 可以与 `@Inject` 注解结合使用明确指定哪个bean应该被注入。
@ -460,11 +460,11 @@ protected boolean matchSelf(MetadataReader metadataReader) {
4. **类路径依赖**
+ 要使用`@Named`和其他JSR-330注解需要确保`javax.inject`库在类路径上。如果没有添加此依赖,使用这些注解会导致类找不到错误。
5. **与JSR-330的其他注解的集成**
+ 当使用`@Named`时,可能还希望考虑使用JSR-330的其他注解如`@Inject`,以确保一致性。
+ 当使用`@Named`时,我们可能还希望考虑使用JSR-330的其他注解如`@Inject`,以确保一致性。
6. **避免名称冲突**
+ 当使用`@Named`为bean指定一个名称时应确保在Spring上下文中没有其他bean使用相同的名称。否则可能会出现不可预测的行为或错误。
7. **作用域**
+ `@Named`默认的作用域是singleton。但如果您需要不同的作用域例如prototype需要结合使用`@Scope`注解。
+ `@Named`默认的作用域是singleton。但如果我们需要不同的作用域例如prototype我们需要结合使用`@Scope`注解。
### 九、总结