1 依赖注入的方式(3类4种) 1.1 依赖注入 依赖注入DI是指程序运行过程中,若需要调用另一个对象协助时,无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序.依赖注入是目前最优秀的解耦方式,依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的 实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应资源查找回来;另一类就是依赖注入,而Spring主要使用的就是依赖注入.一般而言,依赖注入可以分为3种方式. 1.2 获取Bean对象的方式—getBean() 图解源码
使用较多的是前三种,具体使用的体会后面注入时会用到 1.3 通过全类名(反射)(最常用) 1.3.1 构造器注入(常用) 构造器注入依赖于构造方法实现,而构造方法可以是有参数的或者无参数的.Spring也可以采用反射的方式,通过使用构造方法来完成注入,构造器注入在 元素里声明属性,这就是构造器注入的原理. 为了让Spring完成对应的构造注入,我们首先需要创建一个JavaBean类,并创建构造方法,这样在使用构造器注入时就会通过对应信息通过反射的形式去创建对象.如果你对反射机制不熟悉,这篇文章会帮到你—>反射 创建一个User类
在全局配置文件applicatioContext.xml中配置Bean信息,这里使用了4种常见的构造器注入的方式:无参构造|索引匹配,类型匹配,名称匹配
测试方法
使用构造器注入缺点也是很明显的,当参数比较少的时候,可读性还可以,但是参数很多时,这种方式就非常复杂了,这时候就应该考虑setter注入了 1.3.2 setter注入(常用) setter注入时Spring中最主流的注入方式.它利用JavaBean规范所定义的setter方法来完成注入,灵活且可读性高.消除了使用构造器注入时出现多个参数的可能性.首先可以把构造方法声明为无参数的,然后使用setter注入为其设置对应的值,其实也是通过Java反射技术来实现的. Setter方式注入也称为属性注入|设值注入,可以给指定Bean注入属性值或者依赖的对象,属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值. 属性注入是实际应用中最常用的注入方式 创建一个User类
修改配置文件信息
测试结果
通过测试结果我们可以很明显看出,Spring"私底下"自动调用了对应属性的setter方法,spring会通过反射调用没有参数的构造方法生成对象,同时通过反射对应的setter注入配置的值.这是Spring最主要的方式,实际中应用最广方. 所以说,如果Bean类中定义了其他带参构造方法,那么必须手动声明一个无参构造器 1.4 通过静态工厂(很少用) 静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让Spring管理所有对象,不能直接通过"工厂类.静态方法()"来获取对象,而是依然通过Spring注入的形式获取. 在配置文件中需要使用factory-method属性指定工厂类中的静态方法 下面是代码示例 工厂类
User类
配置文件
测试类
1.5 通过实例工厂(很少用) 实例工厂的意思就是获取对象实例的方法不是静态的,所以需要先创建一个工厂类实例,然后在调用该工厂类的实例方法,通过该实例方法再创建我们需要的Bean实例 以下为代码示例 实例工厂类
User类
配置文件
测试类
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有