@Autowired

来自Wikioe
Eijux讨论 | 贡献2022年12月7日 (三) 19:39的版本 (创建页面,内容为“category:Spring == 关于 == <span style="color: blue; font-size: 150%">'''@Autowired'''</span> 是属于 Spring 的容器配置的一个注解,与它同属容器配置的注解还有:@Required、@Primary、@Qualifier 等等。 @Autowired:字面意义即“'''自动装配'''”。在 Spring 的世界当中,自动装配指的就是“'''将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起'''”。 === 与 @Reso…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索


关于

@Autowired 是属于 Spring 的容器配置的一个注解,与它同属容器配置的注解还有:@Required、@Primary、@Qualifier 等等。

@Autowired:字面意义即“自动装配”。在 Spring 的世界当中,自动装配指的就是“将 Spring 容器中的 bean 自动的和我们需要这个 bean 的类组装在一起”。

与 @Resource 区别

简单来说:@Resource 相当于“@Autowired”和“@Qualifier” 一起使用。

比较:

@Autowired @Resource
相同 都是通过注解实现依赖注入。
不同 Spring 定义 JSR-250(Java 注解规范)定义
默认方式:ByType,可以配合“@Qualifier”使用 ByName 方式 默认方式:ByName,如果找不到则使用 ByType 方式
可以对:构造器方法参数字段使用 只能对:方法字段使用

相关注解

  1. @Required:与 @Autowired 配合使用,用于指定是否必须有 Bean 候选者。
    • 与“@Autowired(required=true)”作用一样;
  2. @Qualifier:与 @Autowired 配合使用,用于指定 Bean Name 来强制使用名称装配。
    • 可以用于解决“依赖对象冲突”(即,具有多个符合条件的依赖对象);
  3. @Primary:与 @Component 配合使用,用于指定该类型(ByType)下的“默认注入对象”。
    • 可以用于解决“依赖对象冲突”(即,具有多个符合条件的依赖对象);
  4. @Lazy:与 @Autowired、@Component 配合使用,用于“推迟‘带注解的 bean’和‘带注释的 @Autowired 位置’的初始化”。
    • 可以用于解决“循环依赖”(即,A 依赖 B 的同时 B 依赖 A);

常见方式

@Autowired 相对于 xml 方式的注入,特点仅仅是“自动装配”而无需通过 xml 配置类间关系,它与 xml 方式同样有不同的注入方式

Field 注入

构造器注入

Setter注入

其他方式

附:其他注入

DI(Dependency Injection):依赖注入,使用 IOC 创建类的过程中,将类所依赖的属性设置进去。

注入的内容是“类所依赖的属性”:“属性”并一定是“类”,也可以是“基本类型”。