Java开发面经分享:SpringIOC中复杂属性如何“巧妙
private Map<String, Object> maps;private Properties properties;
}
下面我们将依次讲解如何给赋值属性赋值。**1、为类属性赋值**------------以上面的person类为例,我们为其中的Car属性进行赋值,我们知道car在这里也是一个javaBean,其中也包含很多属性,那么应该如何对其进行赋值呢?这里介绍两种方法:### **(1)、引用赋值**我们可以先在IOC中对一个Car对象赋好值,然后在对person对象中的car属性进行赋值时,直接使用ref进行引用即可。如下在xml配置文件中:
<property name="carName" value="凯迪拉克"></property><property name="price" value="200000"></property><property name="color" value="black"></property>
<!-- 引用赋值 --><property name="car" ref="car01"></property>
### **(2)、引用新的类对象赋值**除了上面的引用方法以外,我们还可以直接在对person赋值时,对其中的car对象进行赋值,**也就是直接在person的<bean></bean>标签中给car对象赋值即可,****使用该方法时需要在对car属性赋值的<property></porperty>标签内部写一个新的<bean></bean>标签,在其中对car对象进行赋值。**实例如下:
<!-- 通过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”时不是抽象类。**# Spring全套教学资料**Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。****资料领取方式:[点击这里前往蓝色传送门](https://gitee.com/vip204888/java-p7)****目录:**![](https://img-blog.csdnimg.cn/img_convert/93bac8bd0b4d91c7e171bdb57ba0258e.png)![](https://img-blog.csdnimg.cn/img_convert/cfb9a2dfd763ebdb944782c1e6cff471.png)**部分内容:**![](https://img-blog.csdnimg.cn/img_convert/e38488e69d6b833b0075ceea0d47f398.png)![](https://img-blog.csdnimg.cn/img_convert/f0e8f64d27939beeba970066007817b5.png)# Spring源码* 第一部分 Spring 概述
* 第二部分 核心思想
* 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
* 第四部分 Spring IOC 高级应用基础特性高级特性
* 第五部分 Spring IOC源码深度剖析设计优雅设计模式注意:原则、方法和技巧
* 第六部分 Spring AOP 应用声明事务控制
* 第七部分 Spring AOP源码深度剖析必要的笔记、必要的图、通俗易懂的语言化解知识难点![](https://img-blog.csdnimg.cn/img_convert/f2657c16c4fa6a41b1ca5a6dde7edced.png)![](https://img-blog.csdnimg.cn/img_convert/68a7e593782c3c05d84d318e10f44c39.png)# 脚手框架:SpringBoot技术> 它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。
>
> Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。* SpringBoot入门
* 配置文件
* 日志
* Web开发
* Docker
* SpringBoot与数据访问
* 启动配置原理
* 自定义starter![](https://img-blog.csdnimg.cn/img_convert/0f21fe89662766127ab0d53852e44c16.png)![](https://img-blog.csdnimg.cn/img_convert/450bc9acfa2709f65e8b1bdab10fa6a0.png)# 微服务架构:Spring Cloud Alibaba> 同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。* 微服务架构介绍
* Spring Cloud Alibaba介绍
* 微服务环境搭建
* 服务治理
* 服务容错
* 服务网关
* 链路追踪
* ZipKin集成及数据持久化
* 消息驱动
* 短信服务
* Nacos Confifig—服务配置
* Seata—分布式事务
* Dubbo—rpc通信![](https://img-blog.csdnimg.cn/img_convert/0462d0145314139a4d16517aacc10552.png)![](https://img-blog.csdnimg.cn/img_convert/0d3eed462286a9a528bb7755363b03a5.png)# Spring MVC**目录:**![](https://img-blog.csdnimg.cn/img_convert/8aa8efef8a9d7669bf439a41864140c4.png)![](https://img-blog.csdnimg.cn/img_convert/429068be9259d4f69aa3867694a2d6bb.png)![](https://img-blog.csdnimg.cn/img_convert/29fef5bb2e6f2deb2bc57fd1d79df02b.png)**部分内容:**![](https://img-blog.csdnimg.cn/img_convert/c0534a001500f7e02db13103f69fe93d.png)![](https://img-blog.csdnimg.cn/img_convert/50d51a0519c41aef9586366e5f0b24b4.png)服务网关
* 链路追踪
* ZipKin集成及数据持久化
* 消息驱动
* 短信服务
* Nacos Confifig—服务配置
* Seata—分布式事务
* Dubbo—rpc通信[外链图片转存中...(img-dt8qPhW1-1628134992835)][外链图片转存中...(img-G7uL1mT6-1628134992836)]# Spring MVC**目录:**[外链图片转存中...(img-7vWyDelU-1628134992837)][外链图片转存中...(img-M6IFpfB9-1628134992838)][外链图片转存中...(img-AR2qlS0v-1628134992838)]**部分内容:**[外链图片转存中...(img-pygZITjx-1628134992839)][外链图片转存中...(img-VSPGAefW-1628134992840)]
Java开发面经分享:SpringIOC中复杂属性如何“巧妙相关推荐
- 面试java回答优缺点_阿里Java开发面经分享,面试题(附回答)
下面要给大家分享一个阿里Java开发面经,里面包含了具体的问题,以及相关回答,主要包括了数据库.操作系统.项目相关.java基础.数据结构.计算机网络等内容. 一.数据库 1.为什么在项目中用Mong ...
- 五年java开发面经分享,注意这些细节让你offer拿到手软
先来总结下程序员跳槽的原因: 钱没给够:没涨薪.涨薪太慢.自己提升太快,面试市场价高于当前薪资太多 职业发展:项目太简单.技术太旧.缺乏领导机会.并发不够 心受委屈:恶心的领导.恶心的制度.恶心的产品 ...
- 京东java开发面经_面经|京东技术中台Java开发面经
原标题:面经|京东技术中台Java开发面经 作者:牛肉干o 来源:牛客网 京东技术中台Java开发 title: 京东技术中台秋招面试 希望自己别再干蠢事了 把昨天上午的快手面试给忘了,一觉睡过去了. ...
- c++软件开发面试旋极面试题_经典软件开发面试题:浏览器中输入一个网址后发生了什么?...
经典软件开发面试题:浏览器中输入一个网址后发生了什么? 大家好, 这一期呢,我们来谈一个经典的面试题.这种题目是在浏览器中输入一个网址以后, 会显示一个网页,这期间到底发生了什么? 答案要求说的越 ...
- 思科java开发面试题
思科java开发面试题 1.mybatis怎么用的 2.MySQL怎么用的 3.git怎么用的 4.hashmap和hashtable 5.建立多线程 6.设计模式 7.程序的优化 8.程序的安全
- 中软国际java开发面试题_中软国际java面试题及参考答案
面试题是中软国际java个人求职者在面试过程中的敲门砖,以下是小编为大家收集到的,希望对大家有帮助! :填空题 1Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点? B ...
- Java开发面试题——很有帮助的
面试题 一.Java 1.运行机制 1)Java跨平台原理 Java实现跨平台是JVM(Java虚拟机)起的作用.如果是C/C++的编译方式,一旦换了一个平台,那么就需要重新编译一份对应的可执行代码, ...
- 70道Java开发面试题及答案,linux内核驱动开发视频课程
线程安全:HashMap时单线程安全的,Hashtable是多线程安全的. 遍历不同:HashMap仅支持Iterator的遍历方式,Hashtable支持Iterator和Enumeration两种 ...
- 2022高级JAVA开发面试题精选
面试过程是一个由浅入深的过程,面试官先给求职者抛出一个相对简单的问题,然后通过一环套一环的追问深入考察求职者对知识点的理解掌握程度. 如下是一个实际的关于redis知识点的面试场景: 面试官:你用过r ...
最新文章
- PMCAFF 八周年老友会倒计时 | 北京活动
- 牛客网笔记之JAVA运算符
- 一个题目涉及到的50个Sql语句
- Runtime.getRuntime().exec()调用外部程序
- linq to sql 语法 学习笔记(1)
- window使用fliqlo 教程
- windows无法安装到这个磁盘,选中的磁盘具有MBR分区表,在EFI系统上,windows只能安
- 推荐网络带宽控制软件Netlimiter
- 环签名原理与隐私保护
- 大学生体育课期末大作业
- Flink 创建流处理运行环境
- (2) 机器视觉技术发展的五大趋势
- python 多进程编程 之 加速kmeans算法
- 一对一直播交友APP的核心开发要点,小而美的APP出路吗?
- mysql安装了libaio还是报错_ubuntu安装mysql遇到的坑----解决Mysql报错缺少libaio.so.1
- 华为运营商级路由器配置示例 | 公网IPv4 over SRv6 BE
- 免费中文计算机类编程学习书籍大全
- HikariCP Unable to acquire JDBC Connection] with root cause问题查询
- 09 | 设计模式之美——王争
- Vue中使用andt组件a-table列表数据根据点击的表头进行升/降排序-案例
热门文章
- python删除空文件夹
- c++ 使用 math库笔记
- DLL load failed while importing _pywrap_tensorflow_internal
- opencv 选择矩形框
- KL 损失的边界框回归
- pytorch DataLoader
- Python Flask出现No module named ‘markupsafe._compat
- list转torch tensor
- VS2015 error MSB6006: “cmd.exe”已退出 代码为 3
- ios10申请权限以及弹出允许使用数据框