IOC:其思想是反转资源获取的方向传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动地将资源推送给管理的组件,组件所需要做的仅是选择一种合适的方式来接受资源,这种行为也成为查找的被动形式。
DI:IOC的另一种表述方式;即组件以一些预先定义好的方式(例如:setter方法)接受来自如容器的资源注入,相对IOC而言,这种表述更直接。
<!--在XML文件中通过bean节点来配置bean-->
<bean id = "helloworld" class = "com.xml.spring.HelloWorld"></bean>
id:Bean的名称。
--在IOC容器中必须是唯一的。
--若id没有指定,spring自动将权限定性类名作为Bean的名字
--id可以指定多个名字,名字之间可用逗号,分号,或空格分隔。
spring容器:
在springIOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化,才可以从IOC容器里获取Bean实例并使用。
Spring提供了两种类型的IOC容器实现
--BeanFactory:IOC容器的基本实现
--ApplicationContext提供了更多的高级特性,是BeanFactory的子接口
--BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而非底层BeanFactory.
--无论使用何种方式,配置文件是相同的。
ApplicationContext(代表IOC容器)的主要实现类:
--ClassPathXmlApplicationContext:从类路径下加载配置文件。
--FileSystemXmlApplicationContext:从文件系统中加载配置文件
ConfigurableApplicationContext扩展于ApplicationContext,新增加两个主要方法:refresh()和close(),让ApplicationContext具有启动,刷新和关闭上下文的能力
ApplicationContext在初始化上下文时就实例化所有单例的Bean
WebApplicationContext是专门为web应用而准备的,它允许从相对web根目录的路径中完成初始化工作。
Spring支持三种依赖注入的方式
1.属性注入
2.构造器注入
3.工厂方法注入(很少使用,不推荐)