Spring IOC容器概念

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值