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

wordpress 网站备案手机清理优化软件排名

wordpress 网站备案,手机清理优化软件排名,六安网事,投资公司是做什么的文章目录 1. 引言2. 不推荐使用Autowired的原因3. Spring提供了三种主要的依赖注入方式3.1. 构造函数注入#xff08;Constructor Injection#xff09;3.2. Setter方法注入#xff08;Setter Injection#xff09;3.3. 字段注入#xff08;Field Injection#xff09; 4… 文章目录 1. 引言2. 不推荐使用Autowired的原因3. Spring提供了三种主要的依赖注入方式3.1. 构造函数注入Constructor Injection3.2. Setter方法注入Setter Injection3.3. 字段注入Field Injection 4. 推荐方案5. 参考博客 1. 引言 Field injection is not recommended意思就是不推荐使用字段注入的方式不是不推荐Autowired注解以前为了简便就直接使用 Resource代替程序员都在不断追求完美。。。 接下来我们实实在在的分析一下为啥不推荐以及到底推荐那种方式注入。 2. 不推荐使用Autowired的原因 不推荐使用Autowired进行字段注入的原因有以下几点 紧耦合性Tight Coupling字段注入将依赖关系直接注入到类的字段上导致类与依赖之间产生紧密的耦合。这使得代码难以修改和扩展并且增加了对具体实现的依赖性。 隐藏依赖关系Hidden Dependencies字段注入隐藏了类的依赖关系使代码不够透明和可读。读取代码时无法立即知道类所依赖的其他组件或服务。 单元测试困难Difficult Unit Testing由于字段注入需要依赖容器来自动注入依赖项导致在编写单元测试时必须依赖完整的容器环境。这增加了测试的复杂性并且可能会导致测试变慢或不稳定。 难以发现依赖问题Dependency Issues字段注入使得依赖可以在运行时更改这增加了代码维护的复杂性。同时如果依赖项没有正确配置或不存在就会在运行时出现错误而不是在编译时就能发现。 相比之下构造器注入Constructor Injection或Setter方法注入Setter Injection提供了更好的可测试性、可维护性和代码清晰度。它们明确列出了类所需的依赖项并使得依赖关系更加透明和易于理解。这些方法也更容易进行单元测试且不需要依赖完整的容器环境。 3. Spring提供了三种主要的依赖注入方式 3.1. 构造函数注入Constructor Injection 通过构造函数将依赖项传递给目标类。这种方式明确声明了类所需的依赖项并且使得类的实例在创建时就具备了必要的依赖关系。示例代码如下 Component public class SLFBClient {private final DataSourceFactory dataSourceFactory;/*** Autowired 从spring4.3开始可以省略*/ // Autowiredpublic SLFBClient(DataSourceFactory dataSourceFactory) {this.dataSourceFactory dataSourceFactory;}}3.2. Setter方法注入Setter Injection 通过Setter方法设置依赖项。这种方式允许使用默认构造函数创建类的实例然后通过Setter方法来动态设置依赖项。示例代码如下 Component public class SLFBClient {private DataSourceFactory dataSourceFactory;/*** Autowired 从spring4.3开始可以省略*/ // Autowiredpublic void setDataSourceFactory(DataSourceFactory dataSourceFactory) {this.dataSourceFactory dataSourceFactory;} }3.3. 字段注入Field Injection 通过直接将依赖项注入到类的字段上。这种方式最简洁但也最不推荐使用在之前的回答中已经详细解释了原因。示例代码如下 Component public class SLFBClient {// Autowired // ResourceInjectprivate DataSourceFactory dataSourceFactory;}Autowired、Resource和Inject是用于依赖注入的常见注解它们在使用方式和一些细节上有一些区别。 Autowired 来自Spring框架。默认按照类型byType进行依赖注入会尝试将匹配的bean自动注入到目标字段、构造函数或方法参数中。可以与Qualifier一起使用通过指定bean的名称或限定符来进一步指定要注入的bean。Autowired是非强制性的可以在某些情况下将依赖项标记为可选。 Resource 是Java EE的标准注解也可以被Spring框架支持。默认按照名称byName进行依赖注入通过指定bean的名称来解析并注入匹配的bean。可以使用name属性指定要注入的bean的名称。Resource是强制性的要求找到匹配的bean进行注入否则会抛出异常。 Inject 是Java CDIContexts and Dependency Injection规范的一部分可以由Java EE和一些其他框架如Spring支持。默认按照类型byType进行依赖注入使用与Autowired类似的机制。不支持required属性即所有注入都被视为必需的。可以与Qualifier一起使用通过指定bean的名称或限定符来进一步指定要注入的bean。 总结 Autowired是Spring特有的注解默认按类型进行依赖注入。Resource是Java EE的标准注解可被Spring支持默认按名称进行依赖注入。Inject是Java CDI规范的注解也可被Spring等框架支持默认按类型进行依赖注入。三个注解都可以与Qualifier一起使用来指定具体要注入的bean。Autowired和Inject在功能上相似而Resource功能稍有不同但它们通常可以互相替代使用。 需要注意的是具体在Spring中使用哪个注解可以根据项目的需求、框架的支持以及个人偏好来决定。 4. 推荐方案 使用构造器注入的好处 保证依赖不可变final关键字保证依赖不为空省去了我们对其检查保证返回客户端调用的代码的时候是完全初始化的状态避免了循环依赖提升了代码的可复用性 推荐使用Lombok中的RequiredArgsConstructor注解 Component RequiredArgsConstructor public class SLFBClient {private final DataSourceFactory dataSourceFactory;}接下来我们探讨一下Lombok的NoArgsConstructor, RequiredArgsConstructor, AllArgsContructor三个注解 NoArgsConstructor 自动生成一个无参构造函数。适用于不需要传入参数的情况。 import lombok.NoArgsConstructor;NoArgsConstructor public class MyClass {// Fields and methods }2. RequiredArgsConstructor 自动生成一个包含所有被标记为final和NonNull的字段的构造函数。适用于只关注部分字段并确保这些字段非空的情况。 import lombok.NonNull; import lombok.RequiredArgsConstructor;RequiredArgsConstructor public class MyClass {private final String name;NonNullprivate final Integer age;// Other fields and methods }AllArgsConstructor 自动生成一个包含所有类字段的构造函数。适用于需要一次性传递所有字段值的情况。 import lombok.AllArgsConstructor;AllArgsConstructor public class MyClass {private String name;private int age;// Other fields and methods }5. 参考博客 Field Dependency Injection Considered Harmful Field injection is not recommendedSpring团队不推荐使用Field注入 【Spring】浅谈spring为什么推荐使用构造器注入
http://www.zqtcl.cn/news/947260/

相关文章:

  • 返利网站建设高校精神文明建设网站
  • 河北百度推广seoseo全网优化指南
  • 网站建设网页开发一个类引用另一个类的方法
  • 第四章第二节网站建设的教学设计云南网站建设一度科技公司
  • php 搭建手机网站建e网app下载
  • 河北手机版建站系统价格微信怎么开店铺小程序
  • 中国建设教育网官网是什么网站潮州seo建站
  • 如何做个购物网站学校网站设计的目的
  • 建设部网站158号文件1688官网app
  • 临沂科技网站建设在线网页截图工具
  • 聊城网站推广软件简单网页制作训练
  • wordpress去除文章作者seo核心技术排名
  • 网站建设黄页免费观看wordpress所有文章
  • 企业整站优化沈阳建设学院
  • 网站怎么做弹框河北省建设注册中心网站首页
  • 大连哪里有手机自适应网站建设网站开发层次
  • 网站首页的浮窗怎么做美食网站程序
  • 淮北网站建设建设银行福州分行招聘网站
  • c 网站开发 pdf济南集团网站建设报价
  • 做网站找哪家公司好中国网络优化推广
  • 创建网站目录结构应遵循的方法dz旅游网站模板
  • 我看别人做系统就直接网站下载软件外贸物流流程
  • 手机微信网站南县网站定制
  • 做字幕网站重庆seo代理价格
  • 长春公司做网站找哪个公司好英文网站google推广
  • 潍坊网站建设方案推广官方网站如何建设
  • 设计网站的公司名称苏州建设人才网官网
  • 河南网站推广优化公司wordpress搭建vip下载站
  • 做网站拉客户有效吗网络宣传渠道
  • 制作深圳网站建设四川广安网站建设