Spring jar包:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
一 :Spring标签:
beans 根标签
bean 每一个javabean对应一个bean
id:标识符 唯一标识
class : 实例化javabean的全限定类名 供反射创建对象用的
scope : 对象的使用范围 !
scope中 singleton: 默认值 单例 每次getBean都是同一个
scope中 prototype: 原型的意思 但在这里是多例!! 每次getBean都会创建一个对象出来
二:测试中getBean的三种方式:
getBean("id")
getBean("id",T.class)
getBean(T.class)
三:Spring依赖注入(DI)两种方式
1.set注入方式 强烈推荐
通过 set方法注入
必须要求注入的属性有set方法
步骤
1:你要注入的属性 必须有 set方法
2:在 被注入的bean中 添加一个 <property>
<property>:属性标签
name 类中set方法 后面的名字
如果是 简单类型 value给值(直接给属性赋值即可)
如果是 pojo类型 ref 去关联那个 bean的id
2. 构造注入方式 认识一下理解一下 后面有的地方要用到
通过构造方法完成注入
1:必须要有带参的构造
2:constructor-arg:构造参数的意思 配置时必须类中的所有属性都要写全
例: <bean id="account" class="com.itheima.pojo.Account">
<constructor-arg name="name" value="jack"/>
<constructor-arg name="id" value="123"/>
<constructor-arg name="money" value="10000.1"/>
</bean>
四:IOC 的概念
IOC inverse of control 控制反转!
需要对象的时候,不再去new了,找到spring,取出来就可以了。
我们就是失去了一个权利(创建对象的权利),得到了一个福利(直接从spring中拿对象)。
思想称为IOC,控制反转!
作用:
IOC 用于 组件间的解耦!!
四: 面试题 描述IOC和DI
IOC和DI是一件事情,只是描述的角度不一样!!
IOC 控制反转,你失去一个创建对象的权利,得到一个福利(对象找spring).
Spring 就是在根据反射完成创建对象!!
DI 在创建对象的过程中,将属性设置到对象中!!
DI 依赖IOC发生!!
五:复杂类型注入:
例:<property name="myStrs">
<array>
<value>翟天临</value>
<value>吴秀波</value>
<value>黄海波</value>
</array>
</property>
六:面试题:ApplicationContext 和BeanFactory
都是启动容器的接口 ,对象加载的时间点不一样
ApplicationContext 属于 立即加载 指的就是 在读取完配置文件之后,就把所有的对象都创建出来!!
BeanFactory 属于 延迟加载 指的就是 getBean的时候 再去创建!!