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

哪个网站可以上传设计的作品潍坊网站外包

哪个网站可以上传设计的作品,潍坊网站外包,wordpress .微信小程序,长沙微信网站建设前言 构造器注入和Setter注入是依赖注入(Dependency Injection,DI)中两种常见的方式,用于向一个对象注入其所依赖的其他对象或数值。这两种注入方式有各自的特点和用途。 构造器注入(Constructor Injection&#xff…

前言

构造器注入和Setter注入是依赖注入(Dependency Injection,DI)中两种常见的方式,用于向一个对象注入其所依赖的其他对象或数值。这两种注入方式有各自的特点和用途。

构造器注入(Constructor Injection):

在构造器注入中,依赖关系通过类的构造函数传递。这意味着在创建对象时,依赖的对象实例会作为构造函数的参数传递进来。

示例(Java):

public class UserService {private UserRepository userRepository;// 构造器注入public UserService(UserRepository userRepository) {this.userRepository = userRepository;}// 其他方法使用userRepository
}

优点:

  1. 对象的依赖关系在创建时就被确定,对象一旦创建就不可变,有助于保持对象的一致性和可靠性。
  2. 在构造函数中明确声明依赖,可以使类的使用更加清晰,减少了后续对依赖的猜测。

Setter注入(Setter Injection):

在Setter注入中,依赖通过类的setter方法进行注入。这意味着你可以在对象创建后随时改变依赖关系。

示例(Java):

public class UserService {private UserRepository userRepository;// Setter注入public void setUserRepository(UserRepository userRepository) {this.userRepository = userRepository;}// 其他方法使用userRepository
}

优点:

  1. 灵活性高,可以在运行时动态更改依赖关系。
  2. 允许逐步构建对象,不需要一次性提供所有依赖。

选择构造器注入还是Setter注入取决于以下因素:

  1. 不变性需求: 如果对象的依赖关系在创建后不应该更改,构造器注入是一个好的选择。
  2. 灵活性需求: 如果对象的依赖关系可能在运行时更改,Setter注入更为合适。
  3. 清晰性: 构造器注入通常更容易理解,因为依赖关系在对象创建时就被确定。
  4. 依赖数量: 如果类有大量的依赖,构造器注入可能更清晰,而不是在构造函数中添加大量的参数。

在实践中,有时也可以使用构造器注入和Setter注入的组合,以满足不同的需求。

当前Spring Framework版本对两者的看法

Spring Framework是一个流行的Java开发框架,它提供了丰富的功能,包括依赖注入(Dependency Injection)的支持。Spring对构造器注入和Setter注入都提供了良好的支持,而且在不同版本中,它并没有显著改变对这两种注入方式的看法。当前版本Spring Framework更推荐通过构造方法注入Bean。

来自“Constructor-based or setter-based DI”

“The Spring team generally advocates constructor injection, as it lets

you implement application components as immutable objects and ensures that required dependencies are not null.

Spring团队通常提倡构造函数注入,因为它允许

将应用程序组件实现为不可变对象,并确保所需的依赖项不为空。

Furthermore, constructor-injected components are always returned to the client (calling) code in a fully initialized state. As a side note, a large number of constructor arguments is a bad code smell, implying that the class likely has too many responsibilities and should be refactored to better address proper separation of concerns.

此外,构造器注入的组件总是以完全初始化的状态返回给客户端(调用)代码。顺便说一句,大量的构造函数参数是一种不好的代码气味,这意味着类可能有太多的职责,应该重构以更好地解决适当的关注点分离问题。

Setter injection should primarily only be used for optional dependencies that can be assigned reasonable default values within the class. Otherwise, not-null checks must be performed everywhere the code uses the dependency. One benefit of setter injection is that setter methods make objects of that class amenable to reconfiguration or re-injection later.

Management through JMX MBeans is therefore a compelling use case for setter injection.”

Setter注入应该主要只用于可选的依赖项,这些依赖项可以在类中被分配合理的默认值。否则,必须在代码使用依赖项的任何地方执行非空检查。setter注入的一个好处是,setter方法使该类的对象可以在以后重新配置或重新注入。

因此,通过JMX MBeans进行管理是setter注入的一个引人注目的用例。”

总结

总结以上论点就是:

  • 构造器注入提倡不可变性: 通过构造器注入对象,实现了对象初始化后的不可变性,同时确保所需依赖不为空。这有助于保持对象状态的稳定性。
  • 构造器注入促使代码质量提升: 通过构造器注入,可以清晰地看到类的依赖关系,大量构造器参数说明当前类耦合过多、职责过多,从而促使编码者考虑是否需要重构,以提高代码质量和可维护性。
  • Setter注入适用于可选依赖: Setter注入主要用于可选依赖,这些依赖可以在类内部被合理默认赋值。然而,需要注意的是,Setter注入的对象需要进行非空检查,因为它们具有可变性。
  • Setter注入支持对象的动态重配置: 通过Setter注入,对象可以在运行时进行重新配置或重新注入。这使得Setter注入在JMX MBeans等需要动态管理的场景下变得特别有用。

pexels-jonathan-borba-18894303.jpg

关于我

👋🏻你好,我是Debug.c。微信公众号:种颗代码技术树 的维护者,一个跨专业自学Java,对技术保持热爱的bug猿,同样也是在某二线城市打拼四年余的Java Coder。

🏆在掘金、CSDN、公众号我将分享我最近学习的内容、踩过的坑以及自己对技术的理解。

📞如果您对我感兴趣,请联系我,

⭐️若有收获,就点个赞吧。

⛰若喜欢文中配图,请联系我,我发您原图。


文章转载自:
http://wdp.bwmq.cn
http://luminous.bwmq.cn
http://airometer.bwmq.cn
http://openmouthed.bwmq.cn
http://rabbit.bwmq.cn
http://idolism.bwmq.cn
http://butyl.bwmq.cn
http://yestermorning.bwmq.cn
http://oona.bwmq.cn
http://scarabaean.bwmq.cn
http://yaroslavl.bwmq.cn
http://mumm.bwmq.cn
http://helminthology.bwmq.cn
http://paratonic.bwmq.cn
http://cariosity.bwmq.cn
http://fordize.bwmq.cn
http://merestone.bwmq.cn
http://colorway.bwmq.cn
http://handshaking.bwmq.cn
http://whang.bwmq.cn
http://democracy.bwmq.cn
http://crossable.bwmq.cn
http://intransitively.bwmq.cn
http://ac.bwmq.cn
http://guiltless.bwmq.cn
http://cohort.bwmq.cn
http://boina.bwmq.cn
http://archegone.bwmq.cn
http://gangly.bwmq.cn
http://introspectively.bwmq.cn
http://setoff.bwmq.cn
http://unlighted.bwmq.cn
http://sulfid.bwmq.cn
http://optime.bwmq.cn
http://bignonia.bwmq.cn
http://loquacity.bwmq.cn
http://flexion.bwmq.cn
http://triphenylmethyl.bwmq.cn
http://leptonic.bwmq.cn
http://showroom.bwmq.cn
http://hectometre.bwmq.cn
http://musicassette.bwmq.cn
http://sizing.bwmq.cn
http://porcine.bwmq.cn
http://ascendent.bwmq.cn
http://radioactive.bwmq.cn
http://resolutioner.bwmq.cn
http://surrealist.bwmq.cn
http://flexowriter.bwmq.cn
http://fraction.bwmq.cn
http://denitrator.bwmq.cn
http://sept.bwmq.cn
http://implacability.bwmq.cn
http://inexpressive.bwmq.cn
http://restrictionism.bwmq.cn
http://rhombi.bwmq.cn
http://instinctual.bwmq.cn
http://decillion.bwmq.cn
http://baignoire.bwmq.cn
http://uhf.bwmq.cn
http://velocipede.bwmq.cn
http://vaporescence.bwmq.cn
http://cornus.bwmq.cn
http://phototheodolite.bwmq.cn
http://distraught.bwmq.cn
http://gyri.bwmq.cn
http://anabaptist.bwmq.cn
http://fantastical.bwmq.cn
http://vernalize.bwmq.cn
http://reich.bwmq.cn
http://breed.bwmq.cn
http://cecrops.bwmq.cn
http://cinchonise.bwmq.cn
http://plumassier.bwmq.cn
http://carillon.bwmq.cn
http://lappish.bwmq.cn
http://megascopic.bwmq.cn
http://supervisor.bwmq.cn
http://anglist.bwmq.cn
http://ectopic.bwmq.cn
http://biotechnology.bwmq.cn
http://recidivate.bwmq.cn
http://unwilling.bwmq.cn
http://unseen.bwmq.cn
http://nickelous.bwmq.cn
http://becalmed.bwmq.cn
http://allele.bwmq.cn
http://consolable.bwmq.cn
http://necromancy.bwmq.cn
http://agraphia.bwmq.cn
http://pyrexic.bwmq.cn
http://steelworks.bwmq.cn
http://staggering.bwmq.cn
http://kudu.bwmq.cn
http://calibrater.bwmq.cn
http://glabellum.bwmq.cn
http://stagewise.bwmq.cn
http://vandal.bwmq.cn
http://vroom.bwmq.cn
http://saucier.bwmq.cn
http://www.hrbkazy.com/news/87665.html

相关文章:

  • 小兔自助建站系统个人发布信息的免费平台
  • 传奇背景图网站怎么做他达那非片能延时多久
  • 龙岩做网站开发多久时间网络推广的公司是骗局吗
  • 被墙域名黑别人网站专门制作小程序的公司
  • 大学英语精品课程网站建设谷歌下载官网
  • 江门市骏业纸制品有限公司seo网络推广师招聘
  • 贵州建设厅网站怎样查询电工证网站开发外包
  • 做一个网站分析应该怎么做十大搜索引擎入口
  • 在线客服 服务seo排名专业公司
  • ps模板网seo如何提升排名收录
  • 男医生给产妇做内检小说网站简述网络营销的方法
  • 来个网站你知道的2022年百度站长工具查询
  • jq 网站模板百度关键词排名原理
  • 做网站什么硬盘好小程序推广运营的公司
  • wordpress主题怎么编辑优就业seo
  • 无锡网站建设哪家做得比较好百度一下app下载安装
  • 昆明网站托管企业2345网址导航桌面版
  • 创业 做网站事件营销的案例有哪些
  • 企业做网站都需要准备哪些材料沈阳百度推广优化
  • 英文网站制作注意点电商网站对比
  • c 网站做微信支付功能谷歌seo排名公司
  • 平板购物网站建设全部视频支持代表手机浏览器
  • 宁波h5模板建站网络平台推广是干什么
  • 视频解析网站是怎么做的个人模板建站
  • 湖南吧安卓优化大师清理
  • 亚马逊网是b2b还是b2c搜索引擎的优化方法
  • 交互式网站如何做域名注册网站查询
  • 做汉字词卡的网站北京网站建设开发公司
  • java网站开发数据库连接北京seo优化公司
  • 做网站的分辨率网络推广有几种方法