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

贵州二建报名入口官网上海seo培训

贵州二建报名入口官网,上海seo培训,广东哪里有网站建设,在哪个网站上做推广作用好依赖注入(Dependency Injection, DI)是一种设计模式,也是Spring框架的核心概念之一。其作用是去除Java类之间的依赖关系,实现松耦合,以便于开发测试。为了更好地理解DI,先了解DI要解决的问题。耦合太紧的问题如果使用一个类&#…

依赖注入(Dependency Injection, DI)是一种设计模式,也是Spring框架的核心概念之一。其作用是去除Java类之间的依赖关系,实现松耦合,以便于开发测试。为了更好地理解DI,先了解DI要解决的问题。

耦合太紧的问题

如果使用一个类,自然的做法是创建一个类的实例:

class Player{  Weapon weapon;  Player(){  // 与 Sword类紧密耦合this.weapon = new Sword();  }  public void attack() {weapon.attack();}
}   

这个方法存在耦合太紧的问题,例如,玩家的武器只能是剑Sword,而不能把Sword替换成枪Gun。要把Sword改为Gun,所有涉及到的代码都要修改,当然在代码规模小的时候这根本就不是什么问题,但代码规模很大时,就会费时费力了。

依赖注入

依赖注入是一种消除类之间依赖关系的设计模式。例如,A类要依赖B类,A类不再直接创建B类,而是把这种依赖关系配置在外部xml文件(或java config文件)中,然后由Spring容器根据配置信息创建、管理bean类。

示例:

class Player{  Weapon weapon;  // weapon 被注入进来Player(Weapon weapon){  this.weapon = weapon;  }  public void attack() {weapon.attack();}public void setWeapon(Weapon weapon){  this.weapon = weapon;  }  
}   

如上所示,Weapon类的实例并不在代码中创建,而是外部通过构造函数传入,传入类型是父类Weapon,所以传入的对象类型可以是任何Weapon子类。

传入哪个子类,可以在外部xml文件(或者java config文件)中配置,Spring容器根据配置信息创建所需子类实例,并注入Player类中,如下所示:

    <bean id="player" class="com.qikegu.demo.Player"> <construct-arg ref="weapon"/></bean><bean id="weapon" class="com.qikegu.demo.Gun"> </bean>

上面代码中<construct-arg ref="weapon"/> ref指向id="weapon"的bean,传入的武器类型是Gun,如果想改为Sword,可以作如下修改:

    <bean id="weapon" class="com.qikegu.demo.Sword"> </bean>

只需修改这一处配置就可以。

松耦合,并不是不要耦合。A类依赖B类,A类和B类之间存在紧密耦合,如果把依赖关系变为A类依赖B的父类B0类,在A类与B0类的依赖关系下,A类可使用B0类的任意子类,A类与B0类的子类之间的依赖关系是松耦合的。

可以看到依赖注入的技术基础是多态机制与反射机制。


spring 教程

  • Spring 教程
  • Spring 框架介绍
  • Spring 框架模块
  • Spring开发环境搭建(Eclipse)
  • 创建一个简单的Spring应用
  • Spring 控制反转容器(Inversion of Control – IOC)
  • 理解依赖注入(DI – Dependency Injection)
  • Bean XML 配置(1)- 通过XML配置加载Bean
  • Bean XML 配置(2)- Bean作用域与生命周期回调方法配置
  • Bean XML 配置(3)- 依赖注入配置
  • Bean XML 配置(4)- 自动装配
  • Bean 注解(Annotation)配置(1)- 通过注解加载Bean
  • Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置
  • Bean 注解(Annotation)配置(3)- 依赖注入配置
  • Bean Java配置
  • Spring 面向切面编程(AOP)
  • Spring 事件(1)- 内置事件
  • Spring 事件(2)- 自定义事件
http://www.lbrq.cn/news/2571463.html

相关文章:

  • wordpress错误集锦搜索引擎优化到底是优化什么
  • wordpress多合一seo包公司seo是指什么意思
  • 找做企业网站精准营销方式有哪些
  • 网站建设详细的步骤有哪些整合营销的特点有哪些
  • wordpress ss主题深圳网站设计专业乐云seo
  • 政府网站建设指标评价结果宣传推广渠道有哪些
  • 莱芜网站推广网络推广公司是做什么的
  • 专业微网站建设公司首选收录批量查询
  • 做网站济南西做搜索引擎推广多少钱
  • 做网站有维护费是什么费用现在做百度快速收录的方法
  • apache 做网站seo诊断工具
  • 建筑行业网站模版百度seo搜索排名
  • 自己做黄网站犯法吗百度竞价推广费用
  • 青海网站建设费用价格企业网站推广模式
  • 建设一个网站的方法徐州seo排名公司
  • 建立局域网的步骤青岛网络seo公司
  • 兰州网站建设hiteeth正能量网站地址链接免费
  • 做水利网站需要多少钱营销模式
  • 仙桃哪里做网站北京网站制作推广
  • 揭阳建网站中国新闻最新消息
  • 我想自己做网站可以赚钱爱站网关键词工具
  • 网站建设案例教程试卷营销型网站案例
  • 宁波网站建设公司推荐易企网搜索引擎优化实验报告
  • 网站空间速度快成都网站推广经理
  • 微网站特点seo竞价
  • 一流的品牌网站建设爱站网关键词挖掘
  • 青岛网站建设公司代理长春网站建设技术支持
  • 万柳网站建设开发客户的70个渠道
  • wordpress页面间跳转seo教程免费
  • 可以做ps兼职的网站seo网址大全
  • AVDTP Media Packet 报文深度解析:蓝牙音频流的幕后功臣
  • 十、SpringBootWeb快速入门-入门案例
  • 流式编程终端操作
  • linux git ssh配置过程
  • Day 4-1: 机器学习算法全面总结
  • BT131-800-ASEMI家电领域专用BT131-800