声明☕️
此系列博客是博主的个人学习总结和相应的学习笔记,视频课程来源于此。
SpringBean 的配置详解
- ⬇️图中的applicationContext.getBean(“userService”);里的 “userService”其实不是< bean id =“” class=“”>中的id,而是Bean name。因为,我先前配的id会转成Bean name而已。
- ⬇️一个Bean可以有多个name,就像人可以有多个小名一样。⚠️:所以说,当使用
.getBean(“”)获取Bean的时候可以使用id获取,也可以使用name获取。
- ⬇️scope是Bean的作用范围,Bean在默认情况下,其实就存在一个,就是当例的,产生一个Bean对象放入容器之中(Map),当程序员要获取的时候就把这一个取出。但是可以修改scope,让spring容器产生Bean的时候可以产生多个,那么多个就没有办法存在容器里面了。也就是说,每次getBean(“”)的时候会创建一个新的Bean返回给程序员。因为,想要生成多个Bean中的“多个”没有确切的数字,若Bean生成了“一堆”放到了容器中但是程序员用不着,会造成资源浪费。综上:默认在容器(Map)中就存在一个Bean对象,但需要多个时,可以改变scope值,但改变了scope值会导致每次调用getBean(“”)会创建新的Bean对象。
- ⬇️延迟加载:当使用ApplicationContext的时候,默认情况下,配置文件一加载,容器一创建,Bean就会全部创建完毕,且放到一个位置里,等待.getBean(“”)获取,也就是说提前给程序员缓存完毕。⚠️:但是,如果某些Bean,在配置时配置了lazy-init=“true”,意味着不需要在加载配置文件以后就直接把Bean创建好,而是在.getBean(“”)的时候把Bean创建好,给程序员用(跟BeanFactory一样)。
- ⬇️初始化方法:当Bean创建完毕之后,可能需要初始化的操作,就可以使用配置的方式,指定这个Bean的内部的哪个方法可以作为初始化方法。当以这样的方式创建完Bean之后,Spring会自动帮程序员调用初始化方法。⚠️:(构造方法?构造方法是构造对象用的,初始化方法是等对象创建完毕之后再帮你调用初始化的方法。也就是说,构造方法和初始化方式之间是有时间差的。)
- ⬇️Bean在销毁之前运行的方法。
- ⬇️autowire:自动注入,之前的注入需要配置,property,通过具体实现类的set方法注入。如果,不配置property的情况下,在想让Spring在容器当中自动找到程序员想要的Bean对象注入到另外一个Bean对象中的话,可以使用autowire=“byType或byName”,配置完毕autowire之后,Bean内部有对应的set方法,会自动的从容器当中找类型匹配的或名字匹配的这个Bean自动注入进去。好处就是不用人为的写property而进行注入。
- ⬇️涉及的是Bean的创建方式。