一、Spring是什么?
Spring是框架,也是生态,生态什么意思,它提供了一系列的衍生产品,比如SpringBoot,SpringCloud。要搞懂这些,必须要了解的一个就是“扩展性”,所以我们在看源码的时候,会看到很多空的方法实现,很多类,接口层次接口关系特别复杂。
Spring包含重要的两个东西,一个是IOC,一个是AOP。在了解AOP之前,我们先要理解IOC。
什么是IOC?IOC叫控制反转,什么叫控制反转?原来我们需要一个对象的时候,需要自己来new,但是现在呢,我们交给Spring容器去创建,当我们需要的时候,从容器里去拿。同时,这里面有个东西叫DI,依赖注入,很多人认为IOC和DI是一个东西,其实这么说也没毛病,但是要区分出两个东西的区别,IOC指的是一种思想,DI指的是一种手段。
IOC容器,存放Bean,那么肯定有生产Bean。
二、Spring的使用概述
下图展示bean的一些属性。
<bean
id=”唯一标识”
name=”名称1″
class=”全限定类名”
factory-bean=”工厂实例beanname”
factory-method=”createBean”
autowire=”自动装配类型(byName,byType,constructo,autodetect,no)”
parent=”继承beanName”
depends-on=”前置beanName”
scope=”作用域(singleton,prototype,request,session,globalSeesion)”
lazy-init=”true/false”>
</bean>
一般通过xml形式配置bean,以及Java代码中获取bean的方式如下
<beans> <bean id=? class=?> <property name=? value=? /> <property name=? ref=? /> </bean> <bean id=? class=?> <constructor-arg name=? value=? /> <constructor-arg name=? ref=? /> </bean> </beans>
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
XXX xxx = ac.getBean(XXX.class);
xxx.method();
这是最基本的一个使用方法,很简单,但是中间的处理环节到底是怎么做的,为什么写完一个配置文件,上面的代码中就能获取到我们想要的对象了?我们可以看出来通过ac可以获取到我们要的对象,所以ac里一定包含了一堆bean对象,这些bean对象哪来的,由此可以知道,一定是通过读取xml文件获取的。可以得到下面的流程图
容器用来放bean对象,Spring选择了什么集合来当容器,它选择了Map,有没有发现从容器中获取对象的时候,我们都传了一个参数,这个参数要么是一个Class对象,要么是一个Name,所以用Map来存储是最合适的。如果要你来设计这个Map的话,你觉得key是什么类型,value是什么类型。我觉得有两种方式:
1、key:String,value:Object
2、key:Class,value:Object
为什么呢,因为在进行自动装配的时候,有两种方式,一种是byName,一种是byType。但其实看过Spring源码的人都知道Spring有个三级缓存的东西,三个Map,不是上面两种方式这么简单,到时候我们再细讲。
三、了解Spring容器启动过程
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154522.html