3.IoC容器装配Bean_基于XML配置方式
3.1.实例化Bean的四种方式 (了解)
第一种 无参数构造器 (最常用)
错误演示:
第二种 静态工厂方法
第三种 实例工厂方法
第四种:FactoryBean方式。(源码底层用的多)
FactoryBean提供getObject方法,返回目标类型对象.
Bean4对象是 Bean4的类型(FactoryBean的getObject返回类型 )
小结:
四种方式:
第一种最常用,第二、三、一些框架初始化的时候用的多、第四种spring底层用的多。
【面试题】 BeanFactory和FactoryBean的区别?
BeanFactory:是一个工厂(其实是构建了一个spring上下文的环境,容器),用来管理和获取很多Bean对象,
FactoryBean:是一个Bean生成工具,是用来获取一种类型对象的Bean,它是构造Bean实例的一种方式。
3.2.Bean的作用域
项目开发中通常会使用:singleton 单例、 prototype多例
Singleton: 在一个spring容器中,对象只有一个实例。(默认值)
Prototype: 在一个spring容器中,存在多个实例,每次getBean 返回一个新的实例。
建立包:cn.itcast.spring.c_scope
测试代码:
测试结果:
【注意】
单例是默认值,如果需要单例对象,则不需要配置scope。
3.3.Bean的生命周期
3.3.1.在xml配置Bean的初始化和销毁方法
通过 init-method属性 指定初始化的方法
通过 destroy-method属性 指定销毁对象的方法
测试代码:
测试查看控制台打印,发现销毁方法没有执行。
原因:销毁方法的执行必须满足两个条件:
1)单例(singleton)的bean才会可以手动销毁。
2)必须手动关闭容器(close)时,才会执行手动销毁的方法。
【测试代码修改】
3.3.2.后处理Bean(BeanPostProcessor接口) 了解
后处理Bean也称之为Bean的后处理器,作用是:在Bean初始化前后,对Bean对象进行增强的。它既可以增强一个指定的Bean,也可以增强所有的Bean,底层很多功能(如AOP等)的实现都是基于它的,Spring可以在容器中直接识别调用。
【示例】
执行任意bean操作的测试,控制台输出:
BeanPostProcessor接口,提供增强途径,在不修改原来代码情况下,增添新的功能!
3.4.Bean属性的依赖注入
3.4.1.依赖注入的三种方式
什么是Bean属性的注入?就是对一个对象的属性赋值。有三种方式:
第一种:构造器参数注入
第二种:setter方法属性注入(setter方法的规范-JavaBean规范)
第三种:接口注入
Spring 框架规范中通过配置文件配置的方式,只支持构造器参数注入和setter方法属性注入,不支持接口注入 !
3.4.2.构造器参数注入 constructor-arg
【示例】
构造器参数注入属性值。
配置applicationContext.xml
测试:
3.4.3.setter方法属性注入 property
两步:在类中加入setter方法,在配置文件中使用property
【示例】
配置
测试:
3.4.4. p名称空间的使用
什么是名称空间?
作用:Schema区分同名元素。(有点类似于java的包)
回顾:Xmlns没有前缀是默认的名称空间。
为简化XML文件的配置,Spring2.5版本开始引入了一个新的p名称空间。简单的说,它的作用是为了简化setter方法属性依赖注入配置的,它不是真正的名称空间。
它的使用方法:
操作步骤:
1) 引入p名称空间
2) 将 子元素 简化为 元素的属性
配置时不需要 子元素,简化了配置 .
3.4.5. spEL表达式的使用
spEL(Spring Expression Language)是一种表达式语言,它是spring3.x版本的新特性。
它的作用是:支持在运行时操作和查询对象,其语法类似统一的EL语言,但是SpEL提供了额外的功能,功能更强大。
语法: #{…} , 引用另一个Bean 、属性、 方法
SpEL表达式的使用功能比较多,Bean操作相关的通常有:
#{beanid} 引用Bean(具体对象)
#{beanId.属性} 引用Bean的属性
#{beanId.方法(参数)} 调用Bean的方法
注意:car的name属性需要有getter方法。
更多参考 : Spring_表达式语言.pdf
3.4.6. 集合类型属性注入 (了解-使用时查看即可)
作用:主要用于框架整合配置。
Spring为集合提供了对应的标签:
注入 list元素
注入 set元素
注入 map元素
注入 properties 元素 (hashtable类的子类,是特殊的map,key和value都是String )
====我是分割线=
过了好些天才又发了些复习的资料,因为这段时间一直在忙,找工作!伤不起啊= =。感觉学历真的是硬伤= =。
(っ ̯ -。) 每天晚上学的眼快瞎了,
还是希望能找到一份工作吧!
⭐凌晨三点╮( ̄﹏ ̄)╭⭐
- Spring学习-06:IOC容器装配Bean(xml配置方式)详解
- Spring(三):IoC容器装配Bean(xml配置方式和注解方式)
- IoC容器装配Bean_基于注解配置方式
- IoC容器装配Bean(xml配置方式)(Bean的生命周期)
- 在IoC容器中装配Bean(基于XML配置)
- Spring框架(2)---IOC装配Bean(xml配置方式)
- 【Java.Spring.Core】【IoC】基于注解的Bean装配(非XML配置)
- 04_IOC容器装配Bean(xml方式)
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
- Spring框架(2)---IOC装配Bean(xml配置方式)
- Spring4深入理解IOC&DI04----Bean配置方式(全类名,工厂方法,FactoryBean),配置形式(基于XML和注解),泛型依赖注入
- Spring IOC 容器创建bean的几种方式(Xml配置的方式)
- spring ioc容器注入的集中方式,以及属性注入的集中依赖,继承,使用SPEL表达式,ioc容器的生命周期,bean的几种工厂方法配置方式,bean的自动装配
- Spring笔记:基于XML的DI-IoC容器中bean的简单装配
- IOC容器装配Bean的四种方法(xm配置方式l)
- 基于XML方式的Bean装配实例
- servlet调用spring容器中的bean,的两种方式一种注解一种xml配置
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- 通过DefaultListableBeanFactory加载.xml配置文件学习Spring-IoC容器注册/加载bean的机制(源码走读)
- spring基础-Bean的装配方式(二)基于Annotation的配置