Spring 一

Day01:

学习Spring框架第一天:

分类:

控制反转(IOC):

概述:

控制对象创建销毁
将对象的控制权交给IOC容器

IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

作用:

降低耦合;利于功能复用

三种加载方式 获取应用上下文

1: ClassPathXmlApplicationContext: 从类的根路径下加载配置文件
2: FileSystemXmlApplicationContext: 从硬盘路径下加载配置文件
3: AnnotationConfigApplicationContext: 基于java的配置类 加载Spring的应用上下文配置

基于xml配置文件的 Spring-IOC :

入口:
使用Bean工厂(applicationContext)
通过 ClassPathXMLApplicationContext 加载 XML配置文件;
使用 Bean工厂 .getBean() 方法 根据bean的名称获取是实例化对象

bean标签:

1. 属性:

  • id: bean的唯一标识
  • class:实现类的全限定名称
  • name: bean的名称 – 多个别名 ","隔开 不能重复
  • scope: 作用范围
  • init-method: bean初始化方法名称
  • destory-method: bean销毁方法名称

2. 作用范围:

scope:

  • singleton(默认):单例 所有请求使用一个对象
  • prototype: 多例 每次请求创建一个对象
  • web项目中:
    request: 将bean 存放到request域
    session:将bean 存放到session
    global session: 应用在集群环境下; 没有集群 ,相当于session

3. 生命周期:

  • 单例:
    scope=“singleton”

  • 多例:
    scope=“prototype”

  • init-method:初始化

  • destory-method:销毁

bean 的实例化方式:

1,缺省构造函数方式:
说明:

  • 在默认情况下会根据默认缺省构造函数来创建类对象。如果bean中没有默认无参构造函数,将会创建失败。
    场景:
  • 当各个bean的业务逻辑相互比较独立时,或者与外界关联较少时可以使用

2,静态工厂函数方式:

说明:
使用工厂中的静态方法创建对象,并装配到 spring的IOC 容器中。

  • id 属性:指定 bean 的 id,用于从容器中获取
  • class 属性:指定静态工厂的全限定类名
  • factory-method 属性:指定生产对象的静态方法

场景:

  • 统一管理各个bean的创建
  • 各个bean在创建之前需要相同的初始化处理,则可用静态factory方法进行统一的处理

3,实例化工厂函数方式:

说明:
使用工厂中的实例方法创建对象,并装配到容器中。

  • 先把实例工厂做为一个bean装配到 spring容器中。
  • 然后再引用工厂bean 来调用里面的非静态方法来获取bean并装配到spring的IOC容器中。
  • factory-bean 属性:用于指定实例工厂 bean 的 id。
  • factory-method 属性:用于指定实例工厂中创建对象的方法

场景:

  • 实例factory方法也作为业务bean控制,可以用于集成其他框架的bean创建管理方法,
  • 能够使bean和factory的角色互换

spring的依赖注入(DI):

概述:

DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即(由容器动态的将某个依赖关系注入到组件之中)。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

注入方式:

1. set方法注入:

  • bean中必须提供属性的set方法
  • 在bean标签中 通过property标签注入属性
  • property 指定属性
  • name:按属性名
  • ref:指定注入bean的Id

2. 构造函数注入:

  • bean对象需要有参构造方法
  • 在配置文件中通过constructor-arg 标签注入属性
  • constructor-arg:构造函数
  • name:按属性名
  • index:按下标注
  • type:按类型
依赖注入的简单配置:

P标签方式(set方法)

p名称空间注入,就是set方法注入。其本质在于简化配置,
bean.xml中添加
空间名: xmlns:p="http://www.springframework.org/schema/p"

C标签方式(构造函数)

c名称空间注入,就是构造函数注入。其本质在于简化配置,
空间名: xmlns:c="http://www.springframework.org/schema/c"
复杂类型注入:
  • 使用set方法注入集合属性:
  • array:一般用来设置数组
  • list:一般用来设置list集合
  • map:一般用来设置map集合
  • props:一般用来设置properties
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值