SpringIOC中复杂属性如何“巧妙,Kafka必须掌握的核心技术

<!-- 通过bean来引用一个新的类对象,并且对其中的属性进行赋值 -->

<property name="car" >

    <bean class="com.spring.beans.Car">

        <property name="carName" value="五菱宏光"></property>

        <property name="price" value="100"></property>

    </bean>

</property>



我们来测试一下,获取到IOC中的person对象,读取其中的car属性



//***进行多值赋值,获取bean对象

ApplicationContext iocContext2 = new ClassPathXmlApplicationContext(“ioc2.xml”);

/**

  • 为类属性进行赋值并获取

  • */

@Test

public void test05() {

Person person = (Person)iocContext2.getBean("person01");

Car car = person.getCar();

System.out.println(car);

}




**2、为List属性赋值**

---------------



为list属性进行赋值时需要用到list标签,在<list></list>中写入要存放到list中的元素值。



这里的<list></list>标签就相当于new arraylist<Class>(),在其中写入元素值。具体使用看代码:



<!-- 为list属性赋值 -->

<property name="books">

    <!-- 为list属性赋值时需要使用到list标签 -->

    <!-- 相当于new arraylist<Book>() -->

    <list>

        <!-- 其中存放写入到list中的类 -->

        <bean class="com.spring.beans.Book" p:bookName="西游记" p:author="吴承恩">                

        </bean>

        <ref bean="book01"/>

    </list>

</property>



在<list></list>标签中还包含很多其他的标签可以使用,因为我们例子中的list中存放的是book类,所以我们这里只是在其中存放了两个book对象。



其中还有很多标签如<value></value>、<map></map>等,**对于存放String的list我们就可以直接<value></value>用进行赋值,如<value>1</value>**



**3、为map属性赋值**

--------------



我们知道map是以键值对的形式进行存储的,而且其中有时候也可以存放多种类型的数据,那么对于map类型的属性又应该如何进行赋值的呢?



**与list赋值相似,这里在map中存放的数据需要写在<map></map>标签内,同时使用特定的<entry></entry>标签写入元素, 一个entry就可以创建一个key和value,**



同时value的类型不同,所赋值的方法也不同,对于普通的value直接使用value=””即可,对于引用对象使用value-ref、对于新的bean对象或者list对象就需要在<entry></entry>标签中进行创建了,具体使用可以看下面的代码:



<!-- 为map属性进行赋值 -->

<property name="maps">

    <!-- 相当于创建了一个 new linkHashMap() -->

    <map>

        <!-- 一个entry就可以创建一个key和value -->

        <!-- 为普通value进行赋值 -->

        <entry key="key01" value="张三"></entry>

        <!-- 引用一个外部的car对象 -->

        <entry key="key02" value-ref="car01"></entry>

        <!-- 赋值一个新的bean对象 -->

        <entry key="key03">

        <!-- 使用p名称空间为新的book对象进行赋值 -->

            <bean class="com.spring.beans.Book" p:bookName="三国演义" p:author="罗贯中"></bean>

        </entry>

    </map>



**4、为Properties类赋值**

--------------------



**首先,何为Properties类?**Properties 类位于 java.util.Properties ,是Java 语言的配置文件所使用的类, Xxx.properties 为Java 语言常见的配置文件,如数据库的配置 jdbc.properties, 系统参数配置 system.properties。 **Properties 类具体使用时以key=value的键值对的形式进行存储值。 key值不能重复。**



在IOC中对Properties对象进行赋值时,需要书写在<props></props>标签中,**使用<props>定义java.util.Properties,该标签使用多个<prop>作为子标签。每个<prop>标签必须定义key属性,**如我们在进行数据库连接时在IOC容器中书写的配置:



<property name="properties">

    <props>

        <prop key="userName">root</prop>

        <prop key="password">root</prop>

        <prop key="url">jdbc:mysql:///test</prop>

        <prop key="driverClass">com.mysql.jdbc.Driver</prop>

    </props>

</property>



**三、级联属性赋值**

============



采用级联属性进行赋值,是对属性的属性进行赋值,如我们的person对象中有一个car属性,而car属性中还有carName、price等属性,



> **看下面这样一个情况:**如果我们使用引用赋值的形式对car属性进行赋值,但是引用其中的price属性并不是我们想要的,我们想要将price改成999,那么这个时候就需要用到级联属性。



具体使用是在<bean></bean>中重新写一个<property></property>标签,在其中对car属性的price属性进行赋值,具体代码如下:



<!-- 引用一个car属性,并对car中的属性进行重新赋值   -->

<property name="car" ref="car01"></property>

<property name="car.price" value="999"></property>



**四、IOC中属性类的继承**

================



我们知道Java中可以使用extend进行类的继承,那你知道在spring的IOC中也可以实现类的继承吗?



> **看这样一个实例:**

> 

> 我们现在有person04,并且已经为其赋好值了,现在又有了一个person05,并且其中有很多属性与person04相同(当然也有不一样的),那么现在如果我们再去对person05重新赋值未免有些太麻烦,那么我们就可以将person04作为一个抽象类,专门用来被继承,而且让person05继承该抽象类,对于特有的属性值再修改即可。



**在springIOC中abstract参数用来表示该类是否是抽象类,值为“true”时是抽象类,为“false”时不是抽象类。**



对于需要继承该抽象类的类,使用parent参数来声明继承哪个类。同时对于特有的需要修改的属性值,我们可以直接在<bean></bean>标签中使用<property></property>进行赋值。操作代码如下:



<property name="name" value="继承爸爸"></property>

<property name="sex" value="男"></property>

<property name="age" value="40"></property>

<property name="email" value="baba@qq.com"></property>
<property name="name" value="继承儿子"></property>

<property name="age" value="20"></property>




### 那么如何才能正确的掌握Redis呢?

为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题

*   并发编程面试题汇总

*   JVM面试题汇总

*   Netty常被问到的那些面试题汇总

*   Tomcat面试题整理汇总

*   Mysql面试题汇总

*   Spring源码深度解析

*   Mybatis常见面试题汇总

*   Nginx那些面试题汇总

*   Zookeeper面试题汇总

*   RabbitMQ常见面试题汇总

JVM常频面试:

![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/5669ddc5abed213ce927b6d1a625ce88.png)

Mysql面试题汇总(一)

![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/6cee08a99c55ca54a2f0f212f417c88e.png)

Mysql面试题汇总(二)

![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/3999782bae7d7e712014206e3b6e0a22.png)

Redis常见面试题汇总(300+题)

![Redis高频面试笔记:基础+缓存雪崩+哨兵+集群+Reids场景设计](https://img-blog.csdnimg.cn/img_convert/316837bcbe4e6ecc9eb1f18a6627101f.png)



**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

MQ常见面试题汇总

JVM常频面试:

[外链图片转存中...(img-GPEUu43x-1630842997891)]

Mysql面试题汇总(一)

[外链图片转存中...(img-iJmjkomU-1630842997893)]

Mysql面试题汇总(二)

[外链图片转存中...(img-x3R9BIlT-1630842997894)]

Redis常见面试题汇总(300+题)

[外链图片转存中...(img-NWSFlYq5-1630842997896)]



**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

绝无套路!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值