您的位置:首页 > 其它

3.IoC容器装配Bean_基于XML配置方式

2019-03-06 19:05 288 查看

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 )


====我是分割线=

过了好些天才又发了些复习的资料,因为这段时间一直在忙,找工作!伤不起啊= =。感觉学历真的是硬伤= =。

(っ ̯ -。) 每天晚上学的眼快瞎了,

还是希望能找到一份工作吧!

⭐凌晨三点╮( ̄﹏ ̄)╭⭐

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐