当前位置: 首页 > news >正文

南京装修公司做网站icp

南京装修公司做网站,icp,wordpress $_SERVER,wordpress 添加 博文目录 依赖注入简介 Autowired 注解的优缺点 Spring 和 IDEA 不推荐使用 Autowired 的原因 构造器注入的优势 Autowired 注解的局限性 可读性和可测试性的问题 推荐的替代方案 构造器注入 Setter 注入 Java Config Bean 注解 项目示例#xff1a;Autowired vs 构造器…目录 依赖注入简介 Autowired 注解的优缺点 Spring 和 IDEA 不推荐使用 Autowired 的原因 构造器注入的优势 Autowired 注解的局限性 可读性和可测试性的问题 推荐的替代方案 构造器注入 Setter 注入 Java Config Bean 注解 项目示例Autowired vs 构造器注入 示例代码 可读性和可测试性的对比 总结 1. 依赖注入简介 依赖注入是一种设计模式用于实现对象之间的解耦。在传统的编程方式中一个类通常会直接创建它所依赖的对象这导致了高度的耦合性和难以进行单元测试。而依赖注入则是通过外部化组件的创建和管理来实现对象间的松耦合。 Spring 框架使用了依赖注入这一设计模式使得对象的创建和管理更加灵活。例如下面是一个简单的依赖关系示例 public class Service {private Repository repository;// 传统的依赖方式public Service() {this.repository new Repository();}} 在上述代码中Service 类直接创建了一个 Repository 对象导致两者之间存在紧密的耦合。而使用依赖注入后可以改写为 public class Service {private Repository repository;// 依赖注入public Service(Repository repository) {this.repository repository;}} 这样Service 类的依赖通过构造器注入的方式被外部传入从而实现了解耦。 2. Autowired 注解的优缺点 在 Spring 框架中Autowired 注解用于自动注释框架中所需的依赖。许多开发者在使用 Spring 时会利用 Autowired 注解将其直接应用于类的字段、构造器或 Setter 方法中以实现自动注入。 Componentpublic class Service {Autowiredprivate Repository repository;} 优点 易于使用通过简单地添加 Autowired 注解即可实现依赖注入减少了手工编写代码的复杂性。 减少样板代码Autowired 注解减少了代码中显示注入所需要的样板代码。 自动扫描和装配Spring 会自动扫描应用程序上下文中的所有 Bean并进行自动装配提供了快速开发的便利性。 缺点 难以测试字段注入不便于进行单元测试特别是在没有 DI 容器如 Spring Context的情况下。 隐式依赖Autowired 注解的使用有时会造成依赖关系的不明显使代码的读者难以理解对象的依赖结构。 不推荐的实践Spring 官方以及主流开发工具例如 IntelliJ IDEA已经不推荐直接使用字段注入。 3. Spring 和 IDEA 不推荐使用 Autowired 的原因 构造器注入的优势 强制依赖变量初始化通过构造函数注入类在实例化时必须注入所有依赖确保了依赖变量在类实例化时就能够被正确初始化。 不变性构造函数注入提倡依赖变量的不变性final这样可以确保引用一旦被注入便不会被更改从而提高了代码的安全性和可维护性。 简化测试通过构造函数注入可以方便地进行单元测试而无需启动整个 Spring 容器只需传递模拟对象Mock objects即可。 Autowired 注解的局限性 反射开销使用 Autowired 注解时Spring 容器在运行时需要使用反射机制来注入依赖这带来了额外的性能开销。 隐式依赖关系当使用字段注入时依赖关系变得隐式这会导致代码的可读性下降需要更多文档和注释解释类的依赖关系。 代码可维护性差当类的依赖越来越多时使用 Autowired 注解会使代码变得复杂增加了维护的难度。 可读性和可测试性的问题 代码可读性差Autowired 注解使外部依赖的绑定显得不够直观开发者在阅读代码时需要额外的心智负担来追踪依赖关系。 增加测试复杂性使用字段注入会使单元测试变得困难因为需要在测试中启动 Spring 容器或使用反射来初始化依赖对象。 脆弱性如果依赖对象未正确注入Autowired 注解的字段会处于不确定状态这可能会在运行时导致 NullPointerException。 4. 推荐的替代方案 虽然 Autowired 注解提供了快速实现依赖注入的方式但从长期的维护性和可测试性考虑有更为推荐的替代方案 构造器注入 构造器注入是一种显式的依赖注入方式可以确保依赖对象在类实例化时被正确注入。这是一种更安全、可测试性更高的注入方式。 Componentpublic class Service {private final Repository repository;Autowiredpublic Service(Repository repository) {this.repository repository;}} Setter 注入 Setter 注入是一种通过 Setter 方法设置依赖的方式。虽然使用频率相对较低但在某些需要可选依赖的情况下Setter 注入是一种灵活的选择。 Componentpublic class Service {private Repository repository;Autowiredpublic void setRepository(Repository repository) {this.repository repository;}} Java Config Bean 注解 使用 Java 配置类和 Bean 注解可以显式地定义和注入 Bean从而实现更灵活的依赖注入。 Configurationpublic class AppConfig {Beanpublic Repository repository() {return new Repository();}Beanpublic Service service() {return new Service(repository());}} 5. 项目示例Autowired vs 构造器注入 通过一个简单的项目示例我们可以更直观地理解 Autowired 和构造器注入之间的区别。 示例代码 使用 Autowired 注解 Componentpublic class Service {Autowiredprivate Repository repository;public void performService() {repository.doSomething();}}Componentpublic class Repository {public void doSomething() {// 执行数据库操作}} 使用构造器注入 Componentpublic class Service {private final Repository repository;Autowiredpublic Service(Repository repository) {this.repository repository;}public void performService() {repository.doSomething();}}Componentpublic class Repository {public void doSomething() {// 执行数据库操作}} 可读性和可测试性的对比 可读性 使用构造器注入时依赖关系显而易见读者一眼就可以看到该类需要的所有依赖。这使得代码的理解和管理变得更加容易而不需要额外的注释来解释注入的依赖。 可测试性 使用构造器注入时可以轻松地进行单元测试无需启动整个 Spring 容器只需传递模拟对象即可 public class ServiceTest {Testpublic void testPerformService() {Repository mockRepository mock(Repository.class);Service service new Service(mockRepository);// 测试业务逻辑service.performService();// 验证方法调用verify(mockRepository).doSomething();}} 而使用 Autowired 注解时进行单元测试则变得更为复杂需要额外的代码启动 Spring 容器或使用反射机制 RunWith(SpringRunner.class)SpringBootTestpublic class ServiceTest {Autowiredprivate Service service;MockBeanprivate Repository repository;Testpublic void testPerformService() {// 测试业务逻辑service.performService();// 验证方法调用verify(repository).doSomething();}} 6. 总结 通过本文的详细分析我们可以看出为什么 Spring 和 IntelliJ IDEA 都不推荐使用 Autowired 注解。主要原因包括 构造器注入的优势明显不仅可以强制依赖变量初始化还能提高代码的安全性和可维护性。 Autowired 注解的使用会导致代码的隐式依赖关系降低代码的可读性和可维护性。 使用构造器注入或者其它显式的依赖注入方式可以使代码更易于测试避免了启动整个 Spring 容器的麻烦。 为了提高代码质量增强代码的可读性和可测试性开发者应尽量避免使用 Autowired 注解而优先选择构造器注入、Setter 注入或者 Java Config Bean 注解等显式的依赖注入方式。通过这些替代方案不仅可以提升代码的整体质量还能在不同的开发阶段如维护和测试中减少不必要的复杂性和潜在问题。希望本文的分析和建议能为广大开发者提供有价值的参考。
http://www.hkea.cn/news/14592953/

相关文章:

  • 怎么在ps做网站首页wordpress免费采集器
  • 教你学做窗帘的网站加强网站的建设工作
  • 株洲网站建设哪家好网站建设配色方案
  • 门户网站html手机网站免费空间
  • 什么网站做的好看遂宁网站seo
  • 营销型网站建设要求坪山做网站
  • 镇江市丹徒区建设局网站西安比较好的网络公司
  • 北京网站设计哪家公司好深圳官方网站制作
  • wordpress同步豆瓣优化方案英语必修三
  • 年轻人常用网站高级搜索指令
  • 主题资源网站建设 模块五作业天津网站建设服务公司
  • php旅游网站论文wordpress wpex
  • 市桥有经验的网站建设wordpress 后台颜色
  • 那个公司建设网站设计发布平台
  • 手机访问pc网站跳转临沂网站建设设计
  • 网站接入网方式梁山网站建设公司
  • 福州专业网站建设价格怎样做影视网站
  • 用vue做网站的实例现货黄金什么网站可以做直播
  • 网站建设视频图片长沙债务优化公司
  • 广州建设官方网站工信部门备案网站获取的icp备案号
  • 什么叫展示型网站qq群推广引流免费网站
  • 天津响应式网站建设建站需要会哪些语言
  • 南京市建设工程造价管理处网站莱芜最新招工招聘启事
  • php网站开发环境配置vs怎么做网站
  • 客栈网站建设wordpress h5 视频播放
  • seo外包优化网站网络推广服务
  • 帮企业建设网站和维护网站 设计案例
  • 公众号 上传wordpress传统企业公司网站优化案例
  • 中牟建设工程信息网站九江网络营销
  • 高端网站建设网站定制兰州app定制开发