前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring装配Bean

Spring装配Bean

作者头像
崔笑颜
发布2020-07-03 15:27:04
4460
发布2020-07-03 15:27:04
举报

1 依赖注入的方式(3类4种) 1.1 依赖注入 依赖注入DI是指程序运行过程中,若需要调用另一个对象协助时,无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序.依赖注入是目前最优秀的解耦方式,依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的 实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应资源查找回来;另一类就是依赖注入,而Spring主要使用的就是依赖注入.一般而言,依赖注入可以分为3种方式. 1.2 获取Bean对象的方式—getBean() 图解源码

image.png
image.png

使用较多的是前三种,具体使用的体会后面注入时会用到 1.3 通过全类名(反射)(最常用) 1.3.1 构造器注入(常用) 构造器注入依赖于构造方法实现,而构造方法可以是有参数的或者无参数的.Spring也可以采用反射的方式,通过使用构造方法来完成注入,构造器注入在 元素里声明属性,这就是构造器注入的原理. 为了让Spring完成对应的构造注入,我们首先需要创建一个JavaBean类,并创建构造方法,这样在使用构造器注入时就会通过对应信息通过反射的形式去创建对象.如果你对反射机制不熟悉,这篇文章会帮到你—>反射 创建一个User类

image.png
image.png

在全局配置文件applicatioContext.xml中配置Bean信息,这里使用了4种常见的构造器注入的方式:无参构造|索引匹配,类型匹配,名称匹配

image.png
image.png

测试方法

image.png
image.png

使用构造器注入缺点也是很明显的,当参数比较少的时候,可读性还可以,但是参数很多时,这种方式就非常复杂了,这时候就应该考虑setter注入了 1.3.2 setter注入(常用) setter注入时Spring中最主流的注入方式.它利用JavaBean规范所定义的setter方法来完成注入,灵活且可读性高.消除了使用构造器注入时出现多个参数的可能性.首先可以把构造方法声明为无参数的,然后使用setter注入为其设置对应的值,其实也是通过Java反射技术来实现的. Setter方式注入也称为属性注入|设值注入,可以给指定Bean注入属性值或者依赖的对象,属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值. 属性注入是实际应用中最常用的注入方式 创建一个User类

image.png
image.png

修改配置文件信息

image.png
image.png

测试结果

image.png
image.png

通过测试结果我们可以很明显看出,Spring"私底下"自动调用了对应属性的setter方法,spring会通过反射调用没有参数的构造方法生成对象,同时通过反射对应的setter注入配置的值.这是Spring最主要的方式,实际中应用最广方. 所以说,如果Bean类中定义了其他带参构造方法,那么必须手动声明一个无参构造器 1.4 通过静态工厂(很少用) 静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让Spring管理所有对象,不能直接通过"工厂类.静态方法()"来获取对象,而是依然通过Spring注入的形式获取. 在配置文件中需要使用factory-method属性指定工厂类中的静态方法 下面是代码示例 工厂类

image.png
image.png

User类

image.png
image.png

配置文件

image.png
image.png

测试类

image.png
image.png

1.5 通过实例工厂(很少用) 实例工厂的意思就是获取对象实例的方法不是静态的,所以需要先创建一个工厂类实例,然后在调用该工厂类的实例方法,通过该实例方法再创建我们需要的Bean实例 以下为代码示例 实例工厂类

image.png
image.png

User类

image.png
image.png

配置文件

image.png
image.png

测试类

image.png
image.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档