BeanElementAtrributes
name用于指定一个bean的别名,别名可以有多个,用逗号/空格/分号隔开
可以通过id或者name都可以获取Dog对应的bean
UnderstandIoC
不是用IoC自己创建对象
使用IoC,将对象交给Spring管理,由spring负责创建和管理对象
ApplicationContext相对于BeanFactory而言,是一种高级容器
在spring框架中提供两种类型的容器:1、BeanFactory容器:容器中的屌丝,提供了管理bean和管理bean关系的功能以缓慢的方式加载实例化bean,也就是请求bean时才实例化2、ApplicationContext:容器中的高富帅,提供所有BeanFactory容器提供的功能另外也提供一些高级功能,预加载bean,在应用程序启动上下文时,立刻加载实例化所有的单例bean加载配置文件之后,就会产生一个ApplicationContext的容器
UseIoCToDecouple
IoC结合面向接口编程才能真正实现解耦面向接口编程:定义和实现分离,定义在接口中,实现在类中获取bean的时候尽量用更通用的类型接收,这样可以接收更多类型 这里如果需要将Dog换成Pig的话,只需要将beans.xml中class中的Dog换成Pig即可
UnderstandApplicationContext
每个ApplicationContext对象表示一个容器,多个ApplicationContext对象表示多个容器
每个容器中的bean在该容器内使用
每一个ApplicationContext对象都表示一个独立的容器
如果有个bean是单例的,说明在当前容器内只有一个实例
默认情况下,单例的bean在容器启动,也就是容器加载后会立刻被实例化
单例的bean在调用getBean()的时候实例已经存在,所以该方法只是帮你获取该bean
多例的bean是在请求的时候才会实例化,所以getBean()的调用会导致bean实例化
PropertyInjection
依赖注入的两种方式:
1. 设值的方式注入-使用property标记<bean id="emp1" class=".qdu.beans.Employee"><property name="empId" value="E0001" /><property name="empName" value="高庆澳" /><property name="empGender" value="男" /><property name="empSalary" value="100000" /><!--如果要注入引用的其他bean,name指定属性的名称,ref指定引用的其他bean的id或名称--><!--ref-reference引用--><property name="address" ref="addr1" /></bean>
2.使用构造函数注入2.1-使用constructor-arg标记 *constructor-arg标记说明该属性是通过构造函数作为一个参数进行注入*name指定构造函数参数的名称,value指定要注入的值,ref指定要注入的其他bean的id或名称*也可不设置name,也就是不设置参数的名字,但是需要确保参数的顺序是对的*也可不设置name,而是指定参数的索引,所以从0开始,所以构造函数的第一个参数的索引是0,以此类推*如果要注入引用的其他bean,name指定属性的名称,ref指定引用的其他bean的id或名称<bean id="emp1" class=".qdu.beans.Employee" ><constructor-arg name="eid" value="E0001" /><constructor-arg name="empName" value="高庆澳" /><constructor-arg name="empGender" value="男" /><constructor-arg name="empSalary" value="100000" /><constructor-arg name="address" ref="addr1" /></bean>2.2spring提供另一种使用设值方式注入的简洁写法,但是仍然推荐使用property标记进行注入 <beans> 标签里加上 xmlns:p="springframework./schema/p" <bean id="emp2" class=".qdu.beans.Employee" p:empId="E00002" p:empName="高海鹏" p:empGender="男" p:empSalary="200000" p:address-ref="addr2"></bean>
依赖注入可用于注入:
1. 简单值:基本类型的数据和字符串
2. 引用的其他bean,也就是依赖的其他对象p:address-ref="addr2"使用property(属性)标记可以通过设值的方式给bean注入简单值或引用的其他bean
这里注入简单值相当于给属性设置一个值,只是由spring帮你注入这个值
更多推荐
Spring
发布评论