IOC:控制反转,反转资源获取的方向,容器主动将资源推送给它说管理的组件,组件仅需要选择一种合适的方式来接受资源。采用工厂设计模式。
DI:组件以预先定义好的方式接受来自容器的资源注入。
配置bean:
配置形式:xml、注解。节点为id和class(全类名)
1 IOC容器配置和创建bean实力前,必须对它进行实例化
2两种IOC容器实现:
beanFactory:IOC容器基本实现。
applicationContext提供了更多高级特性,是beanFactory的子接口,几乎都直接用applicationContext的。
3 ApplicationContext
ApplicationContext:代表IOC容器,是顶层接口。
ConfigurationApplicationContext:是ApplicationContext的子接口,新增refresh()和close()两个主要方法,让ApplicationContext具有启动、刷新和关闭上下文的能力。
webApplicationContext:spring集成web。
主要实现类:
ClassPathXmlApplicationContext:从类路径下加载配置文件
FileSystemXmlApplicationContext:从文件系统中加载配置文件
4 Spring支持3种依赖注入的方式
属性注入
构造方法注入
工厂方法注入(不怎么用)
属性注入:setter方法注入,是开发里最常用的注入方式,直接赋值
<bean id="helloWorld" class="mdd.study.beans.HelloWorld">
<property name="name" value="hanmeimei"></property>
</bean>
构造方法注入:
通过构造方法注入bean的属性值or依赖对象,它保证bean实力在实例化以后就可以使用。
蓝后在<constructor-arg>子节点里面声明属性,靠类型type来区分重载方法
注意:<constructor-arg>里面没有name属性
<!-- 通过构造方法配置bean属性 -->
<bean id="car" class="mdd.study.beans.Car">
<!-- = =Audi是奥迪的意思 -->
<constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg>
<constructor-arg value="Shanghai" index="1" type="java.lang.String"></constructor-arg>
<constructor-arg value="30" index="2" type="int"></constructor-arg>
</bean>
</beans>