云南建设网站网站开发工具选用原则

张小明 2026/1/12 2:02:52
云南建设网站,网站开发工具选用原则,哈尔滨自助板建站,延边州住房和城乡建设局网站因公众号更改推送规则#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享点击关注#互联网架构师公众号#xff0c;领取架构师全套资料 都在这里0、2T架构师学习资料干货分上一篇#xff1a;2T架构师学习资料干货分享大家好#xff0c;我是互联网架构师#xff…因公众号更改推送规则请点“在看”并加“星标”第一时间获取精彩技术分享点击关注#互联网架构师公众号领取架构师全套资料 都在这里0、2T架构师学习资料干货分上一篇2T架构师学习资料干货分享大家好我是互联网架构师来源juejin.cn/post/7463352165487935542前言在使用 Spring 框架时依赖注入DI是一个非常重要的概念。通过注解我们可以方便地将类的实例注入到其他类中提升开发效率。Autowired又是被大家最为熟知的方式但很多开发者在使用 IntelliJ IDEA 时常常看到 IDEA 提示不推荐使用Autowired这是为什么呢今天讲一下我对于Autowired字段注入的理解。1. 为什么不推荐使用Autowired1.1. 隐式依赖Autowired会根据类型自动注入依赖可能导致依赖不明确。特别是在存在多个符合类型的候选对象时可能会导致注入失败或错误地注入实例。1.2. 循环依赖Autowired可能导致循环依赖尤其在单例 Bean 中虽然 Spring 有解决方案但仍需额外处理。1.3. 生命周期不透明通过Autowired注入的 Bean 由 Spring 管理类无法显式了解其生命周期。相比之下构造器注入可以显式管理依赖的生命周期。1.4. 不符合不可变性原则字段注入使得依赖关系在对象生命周期内可能发生变化而构造器注入确保依赖在对象创建时设定符合不可变性原则。经常看到的争议点不推荐使用Autowired所以就使用Resource使用Resource时IDEA不会有波浪线提示。2. Autowired和Resource的基本用法2.1. AutowiredAutowired是 Spring 提供的注解用于自动注入依赖项。Spring 会根据类型默认情况下或者名称通过Qualifier来自动注入所需的 Bean。Autowired private UserService userService;在这个例子中Spring 会自动将UserService类型的 Bean 注入到userService属性中。2.2. ResourceResource是 Java 规范的一部分来自javax/jakarta.annotation包它更注重按照名称来注入 Bean。默认情况下它会尝试按名称匹配但如果没有找到匹配的名称再通过类型注入。Resource private UserService userService;与Autowired不同Resource会首先查找名为userService的 Bean如果找不到再通过类型注入。可以看出其实两者本质上是没有区别的只是匹配顺序不一样。3. Autowired和Resource实测对比假如有一个接口类如下Service publicinterfaceUserService{ // 用户服务... }两个实现类如下Component publicclassUserServiceImplimplementsUserService{ // 实现细节 } Component publicclassAnotherUserServiceImplimplementsUserService{ // 另一个实现 }3.1. 使用Autowired做测试在测试接口里面加入Autowired如下/** * 测试接口 */ RestController(test) publicclassTestController{ Autowired private UserService userService; }启动项目控制台输出错误如下错误提示需要一个bean但是找到了两个bean。修改之后指定具体的bean名如下RestController(test) publicclassTestController{ Autowired // Qualifier(userServiceImpl) // 或者使用Qualifier来指定bean名 private UserService userServiceImpl; }启动项目项目正常启动断点测试如下正常获取到需要的bean实例。3.2. 使用Resource做测试在测试接口里面加入Resource如下/** * 测试接口 */ RestController(test) publicclassTestController{ Resource private UserService userService; }启动项目控制台输出错误如下错误提示需要一个bean但是找到了两个bean。修改之后指定具体的bean名如下RestController(test) publicclassTestController{ Resource // Resource(name userServiceImpl) // 或者使用name来指定bean名 private UserService userServiceImpl; }启动项目项目正常启动断点测试如下正常获取到需要的bean实例。可以看出实际上Autowired和Resource的使用效果是一样的。Resource并不优于Autowired两者都是基于字段注入。甚至于在Spring框架中Autowired性能更好例如自动装配的细粒度控制 。4. 推荐注入的方式构造器注入是推荐的首选方式尤其在处理复杂依赖关系、不可变对象、单元测试等场景时构造器注入非常有用。4.1. 推荐原因显式依赖关系构造器注入使依赖关系在对象创建时就显式地列出代码更清晰。不可变性依赖可以声明为 final避免修改。避免循环依赖能及时发现并避免循环依赖问题。明确依赖关系构造器清晰暴露依赖增强代码可读性。4.2. 示例RestController(test) publicclassTestController{ privatefinal UserService userService; publicTestController(UserService userServiceImpl){ this.userService userServiceImpl; } } // 或者使用lombok简化代码。 RestController(test) RequiredArgsConstructor publicclassTestController{ privatefinal UserService userServiceImpl; }伪逻辑说明显式依赖关系应该关注的是整个项目的代码规范而不是针对具体的某一个类去优化使用构造器注入。不可变性应该关注的是合理的设计项目中bean在初始时如果使用Autowired注入某个类就应该不在初始化期间去修改它。避免循环依赖也是和项目的架构相关如果无法中设计上避免也可以通过代理和懒加载去解决。明确依赖关系如果项目类名命名规范不使用相同的类名或者使用一些前缀后缀去区分也能够不影响依赖关系。5. 构造器一定优于Autowired吗Autowired在一些方面要优于构造器注入简化代码自动注入依赖无需手动编写构造器或 setter 方法代码更简洁。快速开发灵活且快速不需要修改构造函数可以直接通过字段注入依赖。自动依赖管理Spring 自动管理依赖简化了依赖的选择和注入过程。避免构造函数冗长对于依赖较多的类字段注入避免了构造函数过长的问题。结语虽然 IDEA 提示不推荐使用Autowired但这并不意味着它是一个糟糕的选择。不同的注入方式有其各自的优缺点选择依赖注入方式时应该根据项目规模、复杂性以及团队编码习惯来决定而不是盲目跟随趋势。认说到底程序从职场角度看公司这样做很可能是想“信息差”捞点回本。建议保存所有当年的交接记录、邮件、IM聊天截图必要时走仲裁流程不然这种事开了先例下一个就可能是别人员写代码要留注释职场上做事也要留痕迹。只有手里握着证据才能不被随便背锅。1、2T架构师学习资料干货分享2、10000TB资源阿里云盘牛逼3、基本涵盖了Spring所有核心知识点总结· END ·最后关注公众号互联网架构师在后台回复2T可以获取我整理的 Java 系列面试题和答案非常齐全。如果这篇文章对您有所帮助或者有所启发的话帮忙扫描上方二维码关注一下您的支持是我坚持写作最大的动力。求一键三连点赞、转发、在看
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

京东的电子网站建设网站开发价格

1 概述 hexdump 是 Linux 系统中用于解析文件原始二进制数据的工具,可将任意类型文件(文本文件、二进制可执行文件、数据报文等)按指定格式转换为十六进制、八进制、十进制或 ASCII 字符等形式输出。该工具适用于二进制文件分析、数据校验、…

张小明 2026/1/10 2:40:20 网站建设

个人网站备案名称wordpress搬家跳回首页

题目背景小果有一个只有两个键的键盘。题目描述一天,她打出了一个只有这两个字符的字符串。当这个字符串里含有 VK 这个字符串的时候,小果就特别喜欢这个字符串。所以,她想改变至多一个字符(或者不做任何改变)来最大化…

张小明 2025/12/24 3:44:08 网站建设

盐城做网站小企业做网站

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告)远程调试控屏包运行 三、技术介绍 Java…

张小明 2026/1/6 5:22:00 网站建设

网站源码提取莱芜新闻直播

文章详细介绍了Deepseek大模型在企业六大领域的智能化应用,包括办公流程自动化、人力资源精准匹配、财务智能分析、行政高效管理、项目数据洞察和客户资源优化。AI技术通过自然语言处理、机器学习等手段提升企业运营效率,降低成本,为决策提供…

张小明 2025/12/24 18:12:20 网站建设

aspcms手机网站插件wordpress标签没反应

9个AI论文工具,研究生高效写作必备! AI 工具助力论文写作,研究生不再焦虑 在当前学术研究日益激烈的背景下,研究生们面对论文写作的压力与日俱增。无论是开题报告、文献综述还是最终的论文撰写,每一个环节都可能成为“…

张小明 2025/12/24 23:51:28 网站建设

企业网站建设 骆诗设计网站建设合同贴花算哪一类

重新定义笔记管理:打造个性化知识库的终极指南 【免费下载链接】note-gen 一款专注于记录和写作的跨端 AI 笔记应用。 项目地址: https://gitcode.com/GitHub_Trending/no/note-gen 你是否厌倦了千篇一律的笔记应用?想要一个真正符合你工作习惯的…

张小明 2025/12/24 15:47:44 网站建设