Spring注入

news/2024/10/27 19:20:49/

前言

向一个普通的类中注入数据有什么方法?

set方法

构造方法

依赖注入描述了在容器之间建立bean与bean之间依赖关系的过程,如果bean运行需要的是数字或者字符串呢?

引用类型

基本数据类型与String

依赖注入方式

setter注入

简单类型

引用类型

构造器注入

简单类型

引用类型

一、Setter注入

1、引用数据类型

在bean中定义引用数据类型并且提供可访问的set方法。

    private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}
    <bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype"><property name="bookDao" ref="BookDao_test"/></bean>

 配置文件中使用property标签ref属性注入引用类型对象。

(property对应的是bean中的引用数据类型变量,ref对应其他bean的id)

2、基本数据类型和String

在bean中定义基本数据类型并且提供set方法。

    private int connection;private String databases;public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}public void setConnection(int connection) {this.connection = connection;}

在配置文件中使用property标签value属性进行注入简单数据类型 

 <bean id="bookDao" name="BookDao_test" class="com.tsj.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy"><!--配置没有顺序一说--><property name="connection" value="10"/><property name="databases" value="mysql"/></bean>

二、 构造器注入

引用数据类型

在bean中定义引用数据类型属性并且提供可访问的构造方法

    private BookDao bookDao;//这是一个构造方法public BookDaoImpl(BookDao bookDao) {this.bookDao = bookDao;} 

在配置文件中使用constructor-arg标签ref属性注入引用数据类型对象

<bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype"><constructor-arg name="bookDao" ref="BookDao_test"/>
</bean>
<bean id="bookDao" name="BookDao_test" class="com.tsj.dao.impl.BookDaoImpl"/>

简单数据类型与String

在bean中定义引用数据类型并且提供可访问的set方法

    private int connection;private String databases;public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}public void setConnection(int connection) {this.connection = connection;}

配置中使用constructor-arg标签value属性注入简单数据类型

<bean id="bookDao" name="BookDao_test" class="com.tsj.dao.impl.BookDaoImpl"><constructor-arg name="connectionNumber" value=10>
</bean>

参数适配

为了解决配置文件和set方法中变量名相同耦合度较高的问题,有以下两种解决方法。

总结 

 依赖自动装配

Ioc容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称之为自动装配

自动装配方式

1、按类型(最常用)

<bean id="userdao" name="userDao_1" class="com.tsj.dao.impl.UserDaoImpl" />
<bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" autowire="byType"/>

(我们可以对比一下使用setter注入) 

    <bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype"><property name="bookDao" ref="BookDao_test"/></bean>

2、按名称

3、按构造方法

4、不启用自动装配

集合注入

注意:如果是引用类型注入,添加<ref bean=""/>

    <bean id="bookService" name="service" class="com.tsj.service.impl.BookServiceImpl" scope="prototype"><property name="bookDao" ref="BookDao_test"/><property name="list"><list><value>1010</value><value>200</value><value>300</value></list></property><property name="arrar"><array><value>dajiahao</value><value>2buabeo</value><value>fqf</value></array></property><property name="map"><map><entry key="country" value="tianjin"/><entry key="country" value="tianjin"/><entry key="country" value="tianjin"/><entry key="country" value="tianjin"/></map></property></bean>

 


http://www.ppmy.cn/news/350813.html

相关文章

nexus4 android6.0,高手在民间:Nexus4能用上Android6.0了

谷歌Android 6.0 Marshmallow已经从几天前开始正式向Nexus系列手机推送。不过遗憾的是&#xff0c;可能是由于硬件配置有些落伍&#xff0c;Nexus 4此次并不在谷歌的升级计划之列。但根据国外媒体的报道&#xff0c;近日有开发者对Android 6.0 Marshmellow进行了一些小小的修改…

惠普webOS亮相MWC,超越想象的魅力

p { margin-bottom: 0.21cm; } 2 月 15 日&#xff0c;惠普 webOS 产品族“抱团”亮相西班牙巴塞罗那“移动世界大展”&#xff08; MWC &#xff09;&#xff0c;震撼观众&#xff0c;其影响力&#xff08;或诱惑力&#xff09;真是“超越想象”&#xff08; “…

Day974.授权码和访问令牌的颁发流程 -OAuth 2.0

授权码和访问令牌的颁发流程 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于授权码和访问令牌的颁发流程的内容。 授权服务就是负责颁发访问令牌的服务。更进一步地讲&#xff0c;OAuth 2.0 的核心是授权服务&#xff0c;而授权服务的核心就是令牌。 为什么这么说…

Java程序员不得不知道的一些设计模式

1、什么是设计模式 设计模式&#xff08;Design pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问&#xff0c;设计模式于己于他人于系统都是多赢…

YT8512H MotorComm 裕太微

YT8512H 品牌 MotorComm/裕太微 封装 QFN32 批号 2022 数量 10000 RoHS 是 产品种类 电子元器件 比较小工作温度 -40C 比较大工作温度 90C 比较小电源电压 5V 比较大电源电压 8.5V 长度 5.8mm 宽度 1.5mm 高度 2.2mm 可售卖地 全国 型号 YT8512H

格行sp790-v13的随身WiFi板子怎么切卡上网同样也是高通410

把棒子通电上网就不用说了吧 然后打开sp970工具箱进去 以下信息自行辩解 然后在设置连接上WiFi信号 密码自己看壳子 链接以后打开sp970工具箱 IP不一定都是 进入 点击左侧菜单 点设备 进去以后 在更改SIM卡设置 那里点一下就自动换卡了 sp970工具箱为免费的 为避免太多人使…

内核链表、JSON的序列化与反序列化

1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除&#xff1b; 2) 结构体每个成员相对结构体首地址的偏移量(offset)都是成员大小的整数倍&#xff0c;如有需要编译器会在成员之间加上填充字节(internal adding)&#xff1b; 3) 结构体的总大小为结构体最宽基本类型…

最新 android wifi芯片,世界首款WiFi6与蓝牙5.1 SOC:Qualcomm 高通 发布 QCA6390 网络芯片...

世界首款WiFi6与蓝牙5.1 SOC&#xff1a;Qualcomm 高通 发布 QCA6390 网络芯片 2019-02-27 15:56:21 55点赞 99收藏 86评论 直达链接 除了近日MWC 2019如火如荼的手机厂商外&#xff0c;著名芯片厂商高通也开始发力&#xff0c;发布了世界首款作同时支持Wi-Fi 6和蓝牙5.1完整功…