Spring(一):Bean

一、结构

1.1,结构

Spring的核心是Core Container 核心容器,里面加载着Bean和其它容器,它是用来处理对象的,是核心。

1.2,IOC控制反转

IOC控制反转指在创建对象时,从new一个对象转为外部提供一个对象。这因为如果每次都new一个对象,那么每次对于这个对象的修改都要修改全部代码,耦合度太高。为了降低耦合度,将对象的创建控制权从程序转移到外部,这就叫IOC控制反转。

IOC控制反转由new一个对象转变为从外部提供一个对象。这里的外部指的就是Cor Container核心容器中的IOC容器,所有的对象都在IOC容器中创建并初始化,在需要的时候传入程序,而这些在IOC容器中创建并初始化的对象被称作bean

DI依赖注入

如果IOC容器中的bean存在依赖关系,那么IOC容器就会将这些bean绑定在一起,这样将需要使用的对象传入程序中,就不用担心这个对象有其它需要使用的依赖对象还在IOC容器中没传入的情况。

1.3 IOC实现过程

1,在pom文件里导入spring的依赖坐标

2,在项目里定义Spring管理的类

 3,在resource中创建applicationContext.xml配置文件,这就是IOC容器,用来管理bean。

 

 4,在main方法中初始化IOC容器,通过容器获取bean。

 1.4,DI依赖注入的实现

1,在类文件中

 

 2,在applicationContext.xml配置文件中配置两个相关联的类的关系。因为是bookService用到bookDao,所以在bookService的bean标签中配置,property 的name指的是bookService类中的属性 bookDao,而ref 中的bookDao指的是它依赖的类bean 的id是bookDao。

 1.5 bean的配置和理解

1.5.1,bean可以通过在name起别名,一样可以找到它,对象的实例就是在IOC容器里创建的

 注意如果Spring运行出错,从最后一行错误提示往上分析。

1.5.2,Spring默认造出来的bean都是单例的,不想要单例需要手动修改scop=“prototype”

 bean默认为单例的原因是IOC容器一开始就是想要造出可以复用的对象,一个对象把实例创建出来之后就不要再改了可以反复用,所以才使用的单例。所以那些需要给属性赋值的实体类常常不适合交给容器进行管理。

1.6,实例化bean的三种方法:

1.6.1,使用构造方法实例化bean,注意要求是无参的构造方法(最常用)

1.6.2,使用静态工厂实例化bean

工厂:一种专门用来创建类的类,里面有返回值是类的类型的方法。如:

public class SchoolFactory{
    public Student student(){
        return new Student();
    }
}

而静态工厂是里面的方法是static静态方法,这样不需要创建实例就可以调用这个方法。

 如何使用静态方法实例化bean呢?

1,定义一个用来创建类的静态工厂

2,在applicationContext.xml中修改配置文件,class是工厂类的类名,而factory-method

是它的实现方法的名字getOrderDao

 3,在main方法中正常创建IOC容器,使用类对象就可以。

1.6.3,实例工厂实例化bean

实例工厂里面的方法不再是static静态方法,而是普通方法,这样需要先创建工厂的实例再调用这个方法。在xml文件中先创建工厂的bean,再创建UserDao的bean。

 1.6.4,FactoryBean实例化bean

建工厂的时候implement 一个Factory Bean 的接口,<>中是你要造的类名,然后点击红线实现方法,第一个方法返回你要造的类实例,第二个方法返回类.class。

这样在xml配置文件里就可以和原来一样直接id+class了,不过要注意id是userDao但class是UserDaoFactoryBean

 1.7 Bean的生命周期控制

1.7.1,在类中定义初始化init()方法和销毁destroy()方法,再去xml配置文件中对它的bean配置init-method和destroy-method(常用)

 1.7.2

 在定义类的时候实现InitializingBean和DisposaBean的接口

 1.7.3 bean的生命周期

 1.7.4,bean的销毁

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值