Spring中Bean对象的创建

1. bean对象创建

Spring默认是单例(singleton)

可以指定scope属性设置为多例

<bean id="User" class="demo1.User" scope="prototype"/>

注意:  

scope="singleton"  在启动(容器初始化之前),就已经创建了bean,且只 有一个。

scope="prototype"  只有在用到对象的时候,才创建对象。

如果设置scope="singleton" 以单例模式创建对象,并且想要延迟创建对象可以 设置lazy-init属性

注意:

lazy-init="true"  延迟初始化,只有用到对象才初始化,并且只创建一个。

lazy-init="false" 默认为false,不延迟创建,即在容器启动之前就创建。

lazy-init属性只对单例(singleton)设置有效!

 

2. bean对象初始化/销毁

设置init-method属性和destory-method属性

init-method="init_user"  对应对象的init_user()方法,在对象创建之后执行。

destory-method="destory_user" 对应对象的destory_user()方法,在对象销 毁的时候执行。注意容器必须用实现类。

 

 

3. 对象依赖关系

对象属性赋值

⑴.通过构造函数

使用<constructor-arg></constructor-arg>标签

A) 按类型匹配 

B) 按索引匹配

C) 引用匹配

⑵.通过set方法给属性注入值

A)<property name="" value=""></property>

B)<property name="" ref=""></property>

⑶.P名称空间给对象的属性注入值

为了简化属性的注入,使用p名称空间代替set方法的属性注入。

<bean id="User" class="demo1.User" p:name="王五" p:age="20"/>

⑷.自动装配 autowire=”byName”||”byType”  区分大小写,自动去容器中查找跟 属性名称一样的对象,也就是说id和属性名称一样。

165917_RgbQ_2601381.png 

也可以定义到全局,这样就不用每个bean节点都去写autowire=”byName”

165937_73q0_2601381.png 

还可以根据类型自动装配,注意如果根据类型自动装配,必须保证容器中只有 一个该类型的对象,否则会报错。

总结:Spring提供的自动装配主要是为了简化配置,但是不利于后期的维护。

⑸.注解

使用注解开发步骤:

⑴.引入context名称空间

⑵.开启注解扫描

165959_gDIm_2601381.png 

注解处理对象之间的关系:

假设一个老师对应一个学生

在Student类中:

170022_51s2_2601381.png 

在Teacher类中

170042_NBKa_2601381.png 

转载于:https://my.oschina.net/u/2601381/blog/693899

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值