菜鸟先飞之依赖注入

本文深入探讨Spring框架中的依赖注入技术,包括set注入、构造注入及其他注入方式,详细解析每种方式的实现原理、优缺点及应用场景,帮助读者全面理解Spring的DI机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继配置过了Spring环境,我们来了解下依赖注入
一、关于依赖注入
1、即set注入:前提是实体类中必须存在set方法(即所谓的依赖,否则 报红,无法给属性赋值);

<bean id="user1" name="user2" class="cn.kgc.kb07.entity.User">
	<property name="userName" value="王老七"/>
</bean>

注意值得注意的是:实体类的实现了带参方法后,无参构造不再默认提供,建议自行添加一个无参构造方法;
这种方法的优缺点:通过无参构造实例化,通过setter访问器实现,灵活性好,但setter方法数量较多,时效性差;

2、在Spring核心配置文件中 通过元素为构造方法传参;

//id 为唯一标识 不可重复 class 为类的路径
<bean id="user1" name="user2" class="cn.kgc.kb07.entity.User">
<constructor-arg name="uid" value="1"/>
<constructor-arg name="userName" value="张嘎"/>
<constructor-arg name="gender" value="男"/>
<constructor-arg name="say" value="三天不打小鬼子,手都痒痒!"/>
</bean>

(1)、一个元素表示构造方法的一个参数,且使用时不区分顺序。
(2)、通过元素的index 属性可以指定该参数的位置索引,位置从0 开始。
(3)、元素还提供了type 属性用来指定参数的类型,避免字符串和基本数据类型的混淆。
构造注入的优缺点:灵活性差,仅靠重载限制太多,时效性好,通过匹配的构造方法实例化,但建议保留无参构造。

3、其他注入(拓展注入),可以通过List ,Map,Arrays 等注入;

public class User {
    private int uid;
    private String userName;
    private String gender;
//    private String say;
    private List<String> list;
    private Map<Integer,String> map;
    private Arrays arrays;

注意: 要对属性赋值 get set 方法是不可缺少的;
要在控制台输出User对象的具体信息toString方法是不可缺少的;
接下来就是对具体的属性进行赋值啦。

<bean id="user" class="cn.kgc.kb07.entity.User">
        <!-- 对list赋值 -->
        <property name="list">
           <list>
               <value>1</value>
               <value>2</value>
               <value>3</value>
               <value>4</value>
           </list>
        </property>
<--方法一-->
<bean id="user" class="cn.kgc.kb07.entity.User">
   <property name="map">
           <props>
               <prop key="1">abc</prop>
           </props>
   </property>
</bean>

<--方法二-->
<bean id="user" class="cn.kgc.kb07.entity.User">
     <property name="map">
          <map>
          <!--  键值对 key 为键 value 为值-->
              <entry key="1" value="abc"/>
          </map>
     </property> 
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值