3.依赖注入 spring_di
概念:
依赖注入[Dependency Injection]指在运行期,由外部容器动态地将依赖对象[要使用的对象]注入到组件中.
注意: 依赖注入的前提是控制反转,被注入对象和接受注入的对象都必须被Spring容器管理.
方式1: setter方式
Java类:
private 普通属性类型 属性名;
private 自定义类类型 属性名;
private 集合类型 属性名;
//提供setter和getter
配置文件:
<bean id="Bean对象匿名" class="类全名"><property name="属性名" value="值" /><property name="属性名" ref="Bean对象匿名" /><property name="属性名"><list>\<value><set>\<value><map>\<entry><props>\<prop></property></bean>
方式2: 构造函数
Java类:
private 普通属性类型 属性名;
private 自定义类类型 属性名;
private 集合类型 属性名;
//提供有参构造方法
配置文件:
<bean id="Bean对象匿名" class="类全名"><constructor-arg index="参数索引" value="值" /><constructor-arg index="参数索引" type="类全名" ref="Bean对象匿名" /><constructor-arg index="参数索引" ><list/set/map/props>[参考setter方式]</constructor-arg></bean>
方式3: 注解方式
Java类与配置文件:
a.配置文件中context命名空间和context约束文件的地址
b.配置文件中添加<context:component-scan base-package="包名" />
c.在Java类的属性或setter上添加注解: @Autowired或@Resource.
@Autowired:
格式: @Autowired [(required=true)]
说明:
- 编写在属性或setter上,表示将Spring容器中同类型的Bean对象赋给该属性
- 根据属性类型到Spring容器中寻找bean对象,然后注入依赖对象
- required默认为true,即配置文件中必须有同类型的Bean对象,否则报错
@Resource:
格式: @Resource[(name="Bean对象匿名")]
说明:
- 编写在属性或setter上面,表示将Bean对象匿名对应的对象赋给该属性
- name属性值为Bean对象匿名,表示将Bean对象匿名对应的对象赋给该属性
- @Resource标注在setter上或不设置name属性,则name属性值默认为属性名
- 若未设置name属性,并且按照默认名称仍然找不到依赖对象时,@Resource将会按属性类型查找同类型的bean对象,然后注入到属性中.
方式4: P命名空间
Java类:
提供属性的setter和getter方法,无需其他操作.
配置文件:
第1步: 添加命名空间
xmlns:p="http://www.springframework.org/schema/p"
第2步: 注册bean,并注入数据
<bean id="bean匿名" class="类全名" p:属性名/属性名-ref="值/匿名" />
3.依赖注入 spring_di相关推荐
- 依赖注入?依赖注入是如何实现解耦的?
如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的? 第一章:小明和他的手机 从前有个人叫小明 小明有三大爱好,抽烟,喝酒-- 咳咳,不好意思,走错片场了.应该是逛知乎.玩王者农药和抢微信红包 ...
- Spring学习-理解IOC和依赖注入
最近刚买了一本介绍ssm框架的书,里面主要对Mybatis.spring.springmvc和redis做了很多的讲解,个人觉得虽然有的内容我看不懂,但是整体上还是不错的.最近正在学习中,一边学习一边 ...
- 白话spring依赖注入
Spring能有效地组织J2EE应用各层的对象.Action?Service?DAO?,都可在Spring的管理下有机地协调.运行. Spring将各层的对象以松耦合的方式组织在一起,对象与对象之间没 ...
- DI 依赖注入实现原理
深度理解依赖注入(Dependence Injection) 前面的话:提到依赖注入,大家都会想到老马那篇经典的文章.其实,本文就是相当于对那篇文章的解读.所以,如果您对原文已经有了非常深刻的理解,完 ...
- 【spring】使用构造方法依赖注入
注 : (1)使用构造方法依赖注入有两种一种是通过参数顺序一种是按照参数类型的顺序 (2)所有的依赖注入都必须拥有无参的构造方法,一开始没有添加是因为jvm会自动分配 按照参数的顺序 代码实现: &l ...
- 又一个强大的PHP5.3依赖注入容器
简单的服务容器 一个简单的 php 5.3 依赖注入容器. 项目地址:https://github.com/godruoyi/easy-container Why 目前比较流行的 PHP 容器: Pi ...
- Swift中依赖注入的解耦策略
原文地址:Dependency Injection Strategies in Swift 简书地址:Swift中依赖注入的解耦策略 今天我们将深入研究Swift中的依赖注入,这是软件开发中最重要的技 ...
- 转《两个个很形象的依赖注入的比喻》
何谓控制反转(IoC = Inversion of Control),何谓依赖注入(DI = Dependency Injection)?一直都半懂不懂,今天看到两个比喻,觉得比较形象. IoC,用白 ...
- php 依赖注入框架,通过实现依赖注入和路由,构建一个自己的现代化PHP框架
如何提高自己编写代码的能力呢?我们首先想到的是阅读学习优秀的开源项目,然后写一个自己的web框架或类库组件.作为web开发者,我们通常都是基于面向对象OOP来开发的,所以面向对象的设计能力或者说设计模 ...
最新文章
- c#操作Excel整理总结
- 抽取文档主题之sklearn实现
- 回顾丨2017年人工智能带火了哪些词
- FCN全连接卷积网络(3)--Fully Convolutional Networks for Semantic Segmentation阅读(摘要部分)
- mysql修改主键生成策略信息_常用Hibernate 主键生成策略
- 20172307 2017-2018-2 《程序设计与数据结构》第7周学习总结
- 美媒:中国假冒芯片太假 致驻伊美军频繁坠机
- 堆排序Java代码实现
- mysql安装,mysql环境变量配置
- PS常用快捷键大全(2020版)
- 【前端三剑客二】CSS手术刀剖析第一篇
- 离散数学_量词分配等值式
- 对php课程的建议,万紫千红总是春——对新课程语文教学、复习的建议与采饶措施a href=http://www.ruiwen.com/friend/list.php(教师中心专稿)/a...
- 通俗说法+专业解释,载波聚合
- 构建静态页面 之 [ 浮动 ]
- c++变幻的矩阵_C++课程设计c++矩阵类(简洁版)
- wifidog认证接口
- linux里添加网卡,Linux添加虚拟网卡的多种方法
- Python 基础之匿名函数 迭代器和高阶函数
- delphi xe mysql_delphi xe 之路(27)XE7 Datasnap使用dbExpress连接MySQL-阿里云开发者社区...
热门文章
- Ubuntu20.04 Desktop image 添加快捷方式
- 5.1.1 什么是I/O设备?有几类I/O设备?
- java数据类型(整型、浮点型、char类型、boolean型、类型转换)
- python 生成pdf收据_python如何与以太坊交互并将区块链信息写入SQLite
- python建立数据库并序列化_python之数据的序列化
- C/C++ 之 C发展史及 各标准特性说明
- fortran的gui开发 python_python和fortran的接口
- linux卸载pci驱动,linux的PCI驱动固件问题
- java死循环_java小白关于while死循环时处理办法的一发求助帖
- python中name没有定义_Python;NameError:未定义名称“handsum”