Spring学习之路(2)----入门理解+代码分析

前言

利用一个简单的例子作为入门分析

spring

17.jpg

配置组件

6.png
7.png
8.png
UserService就是bean
class中为
当spring框架加载时,spring会去查看是否有bean,有bean就会去实例化bean,并装载到内存里,即并从class中找到bean,并实例化userService,然后调用setName(),将value的值传入。

9.png

10.png


理解:

  • 在xml中配置各种bean
  • UserService是其中一个,id为userService
  • 主程序中利用类路径加载文件
  • 也就是相当于实例化ApplicationContect对象,这个对象对应于传入的xml文件
  • 该对象中有很多bean
  • spring框架编译时通过各自的class找到这些bean,实例化,并分配内存
  • 因为有多个bean,所以通过getBean获取对应名称的bean(id),并进行类型转换
  • 获取到bean后就可以调用该bean中的方法

步骤

12.png

13.png
14.png

多个bean

独立的多个bean

16 (1).png
15.png

维护bean之间的关系(引用)

16 (2).png
第一个是UserService中的属性
ref:引用
第二个是引用的bean

分析

16 (3).png

问题:

spring架构的加载、bean的创建、bean与bean怎么被维护:
如果没有调用其他bean,那么
当程序执行时,spring容器对象被创建,
同时对象中的bean被创建,并载入内存

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
语句执行时,spring框架被调用,
同时applicationContext.xml中配置的bean对象就会被创建(可以看成hashmap/hashtable)

也就是

语句被执行时,
内存跟xml那边会==对应==起来
对应:反射机制(用来做框架)

这部分由spring完成

内存

id           对象

userService   UserService(name,byeService(??))
              创建的实例


内存(applicationContext对象引用)(结构类似Hashmap)

id                   对象

userService      UserService(name,byeService(0x234))
地址              创建的实例

byeService(0x234)    ByeService(name)

spring扫描xml,用反射机制在内存中创建bean,其实内存可以理解为applicationContext对象引用,
16 (3).png
保证applicationContext单态

getBean取出的userService,所以us就是userService

18.png

反射机制:

19.png


总结:
16 (4).png
16 (5).png
16 (6).png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值