Spring开篇
Spring开篇
学习内容:
- IOC:控制反转,可以管理Java对象
- AOP:切面编程
- JDBCTemplate:是Spring提供一套访问数据库的技术
- 声明式事务:基于IOC和AOP的管理
- DI-依赖注入,可以理解为是IOC的另外叫法
学前说明: - Spring可以整合其他的框架
- spring根据配置文件xml/注解,创建对象,并放入到容器中,并且可以完成对象之间的依赖
- 当需要使用某个对象实例时,就直接从容器中获取即可(程序员可以更加关注如何使用对象完成相应的业务)
大纲
- 配置文件
- spring容器机制
具体内容
配置文件
注意:这里使用的是spring的配置文件
1.配置monster对象/javabean
2.在beans中,可以配置多个bean
3.bean表示就是一个Java对象
4.class属性是用于指定类的全路径->spring底层使用反射创建
5.id属性表示该Java对象在spring容器中的id 通过id可以获取到对象
6.用于给该对象的属性赋值
注意:
在使用 ClassPathXmlApplicationContext 获取到 xml 文件时,如下图所示,才是我们获取到的路径,是在out里面
spring容器机制
先找到beanFactory
在beanFactory里面找到beanDefinitionMap
- beanDefinitionMap 类型是 ConcurrentHashMap集合
- 是用来存放beans.xml中的bean节点配置的bean对象的信息
打开beanDefinitionMap中的table
table是数组,类型是 ConcurrentHashMap$Node
因为是数组,所以可以存放很多的bean对象信息,就是 bean.xml配置
初始化是512,当超过时,会自动扩容
在table里面找到我们已经创建好的一个对象
- 通过hash算法我们的对象在index = 217的位置
- 是以 ConcurrentHashMap&Node 类型保存的
- key 就是beans.xml 中配置的对象
- value 就是该对象中的信息{比如属性/属性值/类信息/是不是懒加载…}
在beanFactory中还有一个singletonObjects,是ConcurrentHashMap数据类型
里面还有一个table是ConcurrentHashMap$Node
如果在beans.xml文件中配置的对象是单例的,就会初始化中这个table中
在beanFactory中有一个beanDefinitionName,用来存放我们对象的名字
对应老韩16