当前位置: 首页 > news >正文

spring4第4课-ioc控制反转-详解如何注入参数

坚持住,第四天,继续学习spring4.详解如何注入参数

先总结,主要有如下6种:

1,基本类型值;
2,注入 bean;
3,内部 bean;
4,null 值;
5,级联属性;
6,集合类型属性;

详解如下:↓↓↓↓↓

1,基本类型值;(前面第3课的依赖注入的属性注入就是基本类型注入参数,这里不赘述)

    <bean id="people2" class="com.java1234.entity.People">

          <property name="id" value="1"></property>

          <property name="name" value="张三"></property>

           <property name="age" value="11"></property>
    </bean>


2,注入 bean;(第2课也学过,就是bean里面在ref引用另外一个bean,这里不赘述)

bean.xml内容

<bean id="dog1" class="com.java1234.entity.Dog"><property name="name" value="Jack"></property>
</bean>
<bean id="people2" class="com.java1234.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><!--这里的dog是People类内定义的1个对象类名,而dog1是文件上面定义过的一个bean --><property name="dog" ref="dog1"></property>  
</bean>

People类的内容:

public class People {private int id;private String name;private int age;private Dog dog;   // 和bean.xml的name的dog一致

。。。。。。。。

}

3,内部 bean;(只能被内部引用,类似java的内部类)

<bean id="people3" class="com.java1234.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><property name="dog"> <!--和第2种的差异就是,这里不用ref属性了,使用bean标签定义内部类--><bean class="com.java1234.entity.Dog">    <!--用bean标签 定义内部类--><property name="name" value="Tom"></property></bean></property>
</bean>

4,null 值;(这玩意,用于强制清空默认值,避免隐式逻辑导致的意外行为)

  使用频率较低 , 随便看看跳过吧

当需要为 Bean 属性或构造函数参数赋予 null 值时,使用 null 标签明确指示,避免 Spring 容器尝试注入默认值或抛出异常。

<bean id="people4" class="com.java1234.entity.People"><property name="id" value="1"></property><property name="name" value="张三"></property><property name="age" value="11"></property><property name="dog"><null></null>   <!-- null标签 表示没有dog--></property>
</bean>

目前流行的强制清空默认值的替代处理方式是注解驱动,比如

4.1):使用 @Value 注入 null

@Component  
public class DataService {  @Value("#{null}") // SpEL 显式赋 null  private String customStrategy;  
}  

4.2 条件化 Bean 注入

@Configuration  
public class AppConfig {  @Bean  @ConditionalOnProperty(name = "feature.cache.enabled", havingValue = "false")  public CacheManager cacheManager() {  return null; // 直接返回 null Bean  }  
}  


5,级联属性; (不常用,跳过)
6,集合类型属性; 

三种集合类型List,Set,Map 以及Props(有点类似map,主要用于配置系统参数等),

几种标签写法有差异,熟悉下,用时备查就行

    <bean id="people6" class="com.java1234.entity.People">
        <property name="id" value="1"></property>
        <property name="name" value="张三"></property>
        <property name="age" value="11"></property>
        <property name="dog" ref="dog1"></property>
        <property name="hobbies">  <!-- 设置集合 -->
            <list>
                <value>唱歌</value>
                <value>跳舞</value>
            </list>
        </property>
        <property name="loves">
            <set>
                <value>唱歌2</value>
                <value>跳舞2</value>
            </set>
        </property>
        <property name="works">
            <map>
                <entry>
                    <key><value>上午</value></key>
                    <value>写代码</value>
                </entry>
                <entry>

                    <key><value>下午</value></key>
                    <value>测试代码</value>
                </entry>
            </map>

        </property>
        <property name="addresses">
            <props>
                <prop key="address1">aaaaa</prop>
                <prop key="address2">bbbbb</prop>
            </props>
        </property>
    </bean>

相关文章:

  • Linux环境基础开发工具->gcc/g++
  • 深入理解C#中的委托与事件:从基础到高级应用
  • 图片压缩工具 | 发布到咸鱼并配置网盘自动发货
  • 如何利用categraf的exec插件实现对Linux主机系统用户及密码有效期进行监控及告警?
  • 【Redis技术进阶之路】「原理分析系列开篇」探索事件驱动枚型与数据特久化原理实现(文件事件驱动执行控制)
  • C# Costura.Fody 排除多个指定dll
  • Cobra CLI 工具使用指南:构建 Go 语言命令行应用的完整教程
  • Java面试实战:从Spring到大数据的全栈挑战
  • QT6搭建和使用MQTT
  • 【LangChain】
  • 【Redis】第3节|深入理解Redis线程模型
  • Python中的__init__和__new__方法解析
  • 纵览网丨病毒学领域的 AI 变局:机遇、隐忧与监管之路
  • AI如何让你的智能设备电池更“聪明”?——Python实现智能电池管理
  • jdk 国内下载镜像站
  • 互联网商业模式全景解读:B2B、B2C、C2C及更多
  • Android高级开发第一篇 - JNI(初级入门篇)
  • 第一个桌面应用程序的创建
  • st倍增(st表)
  • [Rust_1] 环境配置 | vs golang | 程序运行 | 包管理
  • 阿坝州网站制作/成都网站建设技术支持
  • 蓬莱网站建设价格/seo建站平台哪家好
  • 莱芜网站推广/深圳电子网络推广查询
  • 沈阳有资质做网站的公司/新品牌推广策略
  • 建设工程168网站/资源搜索神器
  • 输入一组基因做网络图的网站/网络销售入门基本知识