spring IoC

一、Ioc-inversion of controller,控制反转。它是一种将你所设计的对象交由容器控制管理,以替换原有的在对象内部直接new。

 

1)Ioc容器管理对象:Ioc是有专门的容器负责管理创建对象。

2)容器帮助我创建管理对象并查找依赖子对象,在我们需要对象时候,只需要做简单的配置,就可以直接使用。替换了原来的:需要使用对象时,主动去获取依赖,生成实例。

在此过程中,Ioc容器帮助用户实现了创建用户类,生成并且注入依赖对象,并管理这些对象的生命周期。

 

概念:

Ioc实现了由传统程序需要我们在类中主动创建对象并引入依赖,导致类间耦合,到Ioc类创建、查找并注入依赖的容器管理,用户不在需要关注这些依赖而直接引用。

它实现了由应用程序主动获取资源到容器实现已经创建好资源,应用程序直接使用的过程。即inversion反转。

DI:dependancy injection,依赖注入,它是组件之间的依赖关系由容器在运行期间,动态的将依赖关系注入到组件中。提高组件重用率,搭建了灵活可复用的平台,只需要简单的配置,就可以实现业务逻辑,无需关注资源的由来和实现。DI是Ioc的另一种角度上相对应概念,明确描述了被注入对象依赖IOC容器配置对象。

 

Ioc是有依赖注入个哦功能呢的容器,负责实例化、定位查找、配置应用的对象实例和创建对象间的依赖。程序无需直接new对象,通过Ioc完成。

 

Spring Ioc:在spring中由接口BeanFactory实现。

spring配置文件:Spring IoC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配。一般使用基于xml配置文件进行配置元数据,而且Spring与配置文件完全解耦的,可以使用其他任何可能的方式进行配置元数据,比如注解、基于java文件的、基于属性文件的配置都可以。

 

Bean:

bean:豆子,由Ioc管理的在应用中实用的对象实例。它是完全由spring容器初始化、装配和管理的对象,与java pojo类相似。

 

Ioc:在spring中的实现是org.springframework.beans下的BeanFactory接口实现基本功能,org.springframework.context下ApplicationContext接口扩展改BeanFactory接口,并且提供了Spring aop、国际化、时间传播以及提供不同层次的context实现(WebApplicationContexst)。ApplicationContext完全继承BeanFactory。

 

1.XmlBeanFactory:BeanFactory的实现,从classpath或文件中读取资源:

BeanFactory bf = new XmlBeanFactory(new FileSystemResource(new  File("classpath:app.xml")));

 

2.ClassPathXmlApplicationContext:与XmlBeanFactory,从classpath获取配置文件。

 

ApplicationContext接口:

• Object getBean(String name) 根据名称返回一个Bean,客户端需要自己进行类型转换;

• T getBean(String name, Class<T> requiredType) 根据名称和指定的类型返回一个Bean,客户端无需自己进行类型转换,如果类型转换失败,容器抛出异常;

 

• T getBean(Class<T> requiredType) 根据指定的类型返回一个Bean,客户端无需自己进行类型转换,如果没有或有多于一个Bean存在容器将抛出异常;

 

• Map<String, T> getBeansOfType(Class<T> type) 根据指定的类型返回一个键值为名字和值为Bean对象的 Map,如果没有Bean对象存在则返回空的Map。

 

-----------------------------------------------------------------------------------------------------------

 

二、

1.xml配置文件元数据。

2.Ioc容器解析:IoC容器的Bean Reader读取并解析配置文件,生成BeanDefinition配置元数据对象,IoC容器根据BeanDefinition进行实例化、配置及组装Bean。

 

Xml配置结构:

<beans>

 <bean id='' name='' alias='' class=''></bean>

 <bean>...</bean>

</beans>

 

1、<bean>标签主要用来进行Bean定义;

2、alias用于定义Bean别名;

 

Bean配置:

●全限定类名(FQN):具体Bean的实现类;

●Bean行为:这些定义作用域(单例、原型创建)、是否惰性初始化及生命周期等;

●Bean创建方式:说明是通过构造器还是工厂方法创建Bean;

●Bean之间关系:即对其他bean的引用,也就是依赖关系定义,这些引用bean也可以称之为同事bean 或依赖bean,也就是依赖注入。

 

Bean定义只有“全限定类名”在当使用构造器或静态工厂方法进行实例化bean时是必须的,其他都是可选的定义。

每个Bean可以有一个或多个id(或称之为标识符或名字),在这里我们把第一个id称为标识符,其余id叫做别名;这些id在IoC容器中必须唯一。Bean命名约定:Bean的命名遵循XML命名规范,但最好符合Java命名规范,由“字母、数字、下划线组成“,而且应该养成一个良好的命名习惯, 比如采用“驼峰式”,即第一个单词首字母开始,从第二个单词开始首字母大写开始。

 

Bean创建:

1.构造器创建(clas类中必须有空构造器)

2.静态工厂:指定factory-method实例化方法参数。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值