Spring IOC容器概念

来源:互联网 发布:linux 看文件权限 编辑:程序博客网 时间:2024/06/12 20:11

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的生命周期



0 0
原创粉丝点击