Spring IOC 初学

谈一下自己的理解,有错误的地方大家随时指正

控制反转:

控制:就是从前创建对象是我们自己创建对象,现在由IOC容器创建对象,

反转:依赖的反转,从前我们在A中用B的方法和属性要先有A再把属性set进去反转之后是我们要先有B再将属性注入到A中

对象的创建权交给了spring控制了对象的创建权

ioc创建bean管理bean

 

常用的三个实现类:

ClassPathXmlApplicationContext 它可以加载类路径下的配置文件

FileSystemXmlApplicationContext 它可以加载磁盘任意路径下的配置文件(必须有访问权限)

AnnotationConfigApplicationContext 它是用于读取注解创建容器的

他们是ApplicationContext接口的实现类,在上面是BeanFactory

实例化bean对象

spring默认采用无参构造方法来实例化bean对象

spring.xml中配置需要实例化的对象

<bean id="唯一标识符" class="类的全限定名">

id =key 给对象设置一个唯一标识符

class= 实现类 需要实例化的类的全限定名----Map中的value

context.getbean拿到实例化对象

getbean可以通过名字和类型来拿,bean,一般用类型来获取

autowired默认通过类型来获取

一般用无参构造方法来实例化bean对象。有参构造方法则需要自己指定

静态工厂实例化对象:自己创建的对象添加到容器里面,用静态工厂

实例化工厂实例化对象:在静态工厂基础上要先拿到实例化工厂对

象,因为不是静态不能直接拿到

 

bean的生命周期:

scope默认单例:

singleton读取配置文件就创建了对象 可以通过懒加载设置获取对象在设置

只要容器存在bean就会一直存在。当容器销毁时才会销毁bean

,prototype设置为多例模式:默认是获取对象时创建bean

bean使用就会一直存在。不常用的时候会被垃圾回收机制回收掉

还有init(),destroy()要配置才可以使用

我们传统用new一个对象对象是我们主动创建出来的。

而ioc专门有一个容器来控制对象的创建,IOC容器来控制对象的创建

依赖注入

我依赖于你,就把你注入给我,

构造方法(),setter()方法

基于构造方法

Constructor

先读取配置文件初始化ioc

根据类型获取实例化对象

name:表示对应的pravite属性名称 ref:bean对象的id

bean 告诉spring需要初始化的对象

基于setter方法:常用

property

常用注解

@controller:控制层

@service:业务逻辑层

@repository:数据访问层

@compoment:普通的类

通过以上注解就能实例化bean

@configuration------配置类

@componmentscan-----包扫描

<context:compoment-scan base-package=" 要扫描的包名">

依赖注入

@autowired

(写在注入的属性上会自动找到他的实现类)

自动通过类型注入,如果找到多个会再按照名字注入

配合qualifier可以选定某个名字注入

@resource

是jdk中的注解也可以实现自动注入

()中不写默认按照名字来注入,找不到就按类型来@scope:作用域

通用性来说resource更强但一般用autowired

@bean-----可以将指定的bean添加到spring的容器中,将别人写的类加到容器中

@import-----将配置类引入配置类

@value可以给属性设置默认值

@value(12)

int i;//i的默认值为12

junit

@RunWith:集成运行环境

@ContextConfiguration({classes:spring.class})--读取配置类

把想测试的类注入进来

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值