Spring IOC 容器概述
DI :让调用类对某一接口实现类的依赖由第三方注入,以移除调用类对某一接口实现类的依赖
IOC注入类型:
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入:</span>
public class Host{
private Client client;
public Host(Client client){
this.client=client;
}
public clientSaySomething(){
this.client.saySomething();
}
}
属性注入:通过setter方法完成调用类所需依赖的注入,更加方便。
public class Host{
private Client client;
public void setClient(Client client){
this.client=client;
}
public void clientSaySomething(){
this.client.saySomething();
}
}
接口注入:将调用类所有依赖注入的方法抽取到一个借口中,调用类通过实现该接口提供相应的注入方法
public interface InjectClient{
void injectClient(Client client);
}
public class Host implements InjectClient{
private Client client;
public void injectClient(Client client){
this.client=client;
}
public void clientSaySomething(){
this.client.saySomething();
}
}
Spring作为一个容器,通过配置文件或注解描述类和类之间的依赖关系阿纳西,自动完成类的初始化和依赖注入工作,通过配置文件进行配置的实例:
<beans>
<!--实现类的实例化-->
<bean id="client" class="src.Client" />
<!--通过client-ref建立依赖关系-->
<bean id="host" class="src.Host" P:client-ref="client" />
</beans>
Spring Resource接口 提供了访问底层资源能力的接口
主要方法:
boolean exists()
boolean isOpen()
URL getURL()
File getFile()
InputStream getInputStream()
具体实现类:
ByteArrayResource
ClassPathResource
FileSystemResource
InputStreamResource
ServletContextResource
UrlResource
为了实现不同的类型资源,必须使用相应的Resource实现类,Spring提供了一个强大的加载资源的机制
能够自动识别不同的资源类型
资源类型地址前缀:
classpath classpath:src/spring.xml
File file:src/spring.xml
http http://localhost/spring.xml
ftp ftp://localhost/spring.xml
无前缀 spring.xml
Ant风格的匹配符:
? 匹配文件名中的一个字符
* 匹配文件名中的任意字符
** 匹配文件名中的多层路径
Spring定义了一套资源加载的接口,并提供了实现类
ResourceLoader实现类提供了Resource getResource(String location)方法
ResoucePatternResolver 实现类提供了Resouce getResouce(String locationPattern)方法
Resouce 提供了 File getFile()方法获取文件
BeanFactory
BeanFactory是Spring框架最核心的接口,提供了高级IOC的配置机制。ApplicaitonContext建立在BeanFactory基础之上,提供了更多面向应用的功能,提供了国际化支持和框架时间体系,更易于创建实际应用一般成BeanFactory为IOC容器,而称ApplicaitonContext为应用上下文
BeanFactory是一个类工厂,可以创建并管理各种类的对象,Spring称这些创建和管理的Java对象为Bean。在Spring中,Java对象的范围更加宽泛。
BeanFactory类体系结构:
XmlBeanFactory
LIstabelBeanFactory
HierahicalBeanFactory
ConfigurableBeanFactory
AutowireCapableBeanFactory
SingletonBeanFactory
BeanDefinitionRegistry
BeanFactory初始化顺序:
创建配置文件
装在配置文件
启动IOC容器
获取Bean容器
ApplicationContext
ApplicationContext由BeanFactory派生过来,提供了更多面向实际应该用的功能。在BeanFacoty中,很多功能需要以编程的方式来实现,而在ApplicaiotnContext中则可以通过配置方式实现
具体实现类:
ClassPathXmlApplicaitonContext
FileSystemXmlApplicaitonContext
ConfigurableApplicationContext
扩展接口:
ApplicaitonEventPublisher
MessageSource
ResourcePatternResolver
LifeCycle
Bean生命周期
Spring容器中的Bean拥有明确的生命周期,由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制,在Spring中,从Bean的作用范围和实例化Bean所经历的一系列阶段来描述Bean的生命周期