武安企业做网站推广,网络营销题库及答案2020,互联网十大上市公司,做百度快照要先有网站吗文章目录 Autowired#xff1a;Spring 最常用的注解1. 作用与简介2. 使用示例3. 注意事项 Resource#xff1a;按名称注入的利器1. 作用与简介2. 使用示例3. 注意事项 Qualifier#xff1a;解决多 bean 注入问题1. 作用与简介2. 使用示例3. 注意事项 Inject#xff1a;标准… 文章目录 AutowiredSpring 最常用的注解1. 作用与简介2. 使用示例3. 注意事项 Resource按名称注入的利器1. 作用与简介2. 使用示例3. 注意事项 Qualifier解决多 bean 注入问题1. 作用与简介2. 使用示例3. 注意事项 Inject标准化的依赖注入1. 作用与简介2. 使用示例3. 注意事项 总结如何选择正确的注解1. 使用建议2. 注意事项推荐阅读文章 在使用 Spring 框架进行开发时依赖注入Dependency Injection, DI是核心理念之一。它让我们可以轻松地管理对象之间的依赖关系而不需要手动创建和维护这些依赖。在实现依赖注入时Spring 提供了多种注解来简化开发流程其中最常见的四种注解是 Autowired、Resource、Qualifier 和 Inject。 在这篇文章中我将通过代码示例详细介绍这些注解的使用方法并总结一些使用中的注意事项帮助你更高效地进行开发。 AutowiredSpring 最常用的注解
1. 作用与简介
Autowired 是 Spring 提供的专用注解用来自动注入依赖。它可以用于构造器、字段、方法甚至是多参数构造器或 setter 方法。
2. 使用示例
Component
public class CarService {Autowiredprivate Engine engine; // 字段注入Autowiredpublic CarService(Engine engine) { // 构造器注入this.engine engine;}Autowiredpublic void setEngine(Engine engine) { // Setter 方法注入this.engine engine;}
}在上述代码中无论是字段、构造器还是 setter 方法Spring 都会自动将 Engine 的实例注入到 CarService 中。
3. 注意事项 推荐使用构造器注入虽然字段注入最简单但构造器注入更受推荐因为它有助于保持对象的不可变性方便测试和重构。 处理可选依赖如果某个依赖是可选的可以通过 requiredfalse 来避免依赖注入时抛出异常 Autowired(required false)
private Engine engine;Resource按名称注入的利器
1. 作用与简介
Resource 是来自 JDK 的标准注解它可以按名称或按类型进行依赖注入。默认情况下它是按名称注入的。
2. 使用示例
Component
public class CarService {Resource(name v8Engine) // 按名称注入private Engine engine;
}在上面的代码中Spring 会查找名为 v8Engine 的 Engine 实例并注入到 CarService 中。
3. 注意事项
名称优先Resource 优先按名称注入如果未指定名称它会使用变量名作为默认名称。如果找不到对应的 bean才会按类型注入。因此确保 bean 名称与变量名或指定的名称一致。不支持 requiredfalseResource 不支持像 Autowired 那样的 required 属性因此如果依赖没有找到它将抛出异常。 Qualifier解决多 bean 注入问题
1. 作用与简介
当 Spring 容器中有多个相同类型的 bean 时Qualifier 注解可以帮助我们明确指定哪个 bean 应该被注入。它通常与 Autowired 或 Inject 一起使用。
2. 使用示例
Component
public class CarService {AutowiredQualifier(v8Engine) // 指定要注入的具体 beanprivate Engine engine;
}在这里即使有多个 Engine 实现类Spring 仍会通过 Qualifier(v8Engine) 来指定注入的 v8Engine 实例。
3. 注意事项
明确指定 bean 名称当有多个同类型的 bean 时使用 Qualifier 是必要的否则 Spring 会抛出 NoUniqueBeanDefinitionException 异常。与其他注解搭配使用Qualifier 通常与 Autowired 或 Inject 搭配使用用于解决多实例时的注入问题。 Inject标准化的依赖注入
1. 作用与简介
Inject 是来自 JSR-330 的注解与 Autowired 类似它用于实现依赖注入但它是一个标准化的注解适用于所有依赖注入框架。
2. 使用示例
import javax.inject.Inject;Component
public class CarService {Injectprivate Engine engine; // 标准依赖注入
}使用 Inject 和 Autowired 的效果基本相同但它具有更广泛的适用性尤其在使用多种依赖注入框架时。
3. 注意事项
不支持 requiredfalse与 Autowired 不同Inject 没有 required 属性所以所有依赖必须是必需的。支持 Qualifier与 Autowired 一样Inject 也可以与 Qualifier 一起使用以指定注入的具体 bean。 总结如何选择正确的注解
注解来源默认注入方式是否支持 Qualifier是否支持 requiredfalseAutowiredSpring 特有按类型注入是是ResourceJDK 标准javax.annotation按名称注入否否InjectJSR-330 标准按类型注入是否
1. 使用建议
优先使用 Autowired如果你的项目完全依赖于 Spring 框架Autowired 是最灵活和强大的选择尤其是它支持构造器注入和 requiredfalse。使用 Resource 进行按名称注入如果你需要按名称进行注入Resource 是最合适的选择。但要注意Resource 的功能相对有限。标准化项目使用 Inject如果你的项目需要兼容多个依赖注入框架Inject 是最佳选择因为它是标准化的注解。多实例时使用 Qualifier当有多个同类型的 bean 时Qualifier 是解决模糊注入问题的利器避免不必要的异常。
2. 注意事项
避免字段注入尽量避免字段注入推荐使用构造器注入这不仅有助于依赖的不可变性还能提升代码的可测试性。使用 Qualifier 解决多 bean 注入问题如果存在多个同类型的 bean一定要使用 Qualifier 明确指定要注入的 bean否则会出现 NoUniqueBeanDefinitionException 异常。可选依赖在使用 Autowired 时如果某个依赖可能为空记得使用 requiredfalse防止 Spring 因找不到 bean 而抛出异常。名称和类型冲突在使用 Resource 时要特别注意 bean 名称和类型冲突问题确保名称和实际注入的 bean 名称匹配否则可能会导致注入失败。 通过了解这些注解的使用方式和特点选择合适的注解不仅能够简化代码还可以避免一些常见的注意事项。
推荐阅读文章
1、使用 Spring 框架构建 MVC 应用程序初学者教程 2、有缺陷的 Java 代码Java 开发人员最常犯的 10 大错误 3、如何理解应用 Java 多线程与并发编程 4、Java Spring 中常用的 PostConstruct 注解使用总结 5、线程 vs 虚拟线程深入理解及区别 6、深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别 7、10大程序员提升代码优雅度的必杀技瞬间让你成为团队宠儿 8、“打破重复代码的魔咒使用 Function 接口在 Java 8 中实现优雅重构” 9、Java 中消除 If-else 技巧总结 10、线程池的核心参数配置(仅供参考) 11、【人工智能】聊聊Transformer深度学习的一股清流(13) 12、Java 枚举的几个常用技巧你可以试着用用