Spring 学习笔记2 - Bean的定义与Ioc的使用

名词定义:
bean标签class属性指向的bean统一用currBean表示。
bean标签其他属性指向的bean统一用referBean表示。
基本数据类型 = 基本类型 + 包装类型 + String。

=== beans ===

default-lazy-init

flase【默认】
true:全局延迟加载

=== bean ===

id

name

从效果来说等同于id,区别:

class

Bean的全限定类名

lazy-init

true:延迟加载(即用到的时候才创建并初始化Bean)
false:即时加载(即在创建容器时就创建并初始化Bean)

scope

singleton【默认】:每次获取同一个对象
prototype:每次都是获取新对象
request:
session:
global-session:
application:

init-method

Bean创建后调用的初始化方法(可以是private static)

destroy-method

factory-bean

定义创建currBean的bean的工厂方法所在的referBean

factory-method

定义创建currBean的工厂方法。该方法必须是非静态无参方法。
Spring可以从工厂方法返回类型推测出currBean的类型,因此可以不用定义currBean的class属性。

depends-on

表明currBean依赖于referBean。这样在创建currBean时会先创建referBean。
注意:如果referBean设置了延迟加载,而currBean没有设置,那么延时加载会失效。
可以这么理解:延迟加载是在第一次使用referBean时才创建,而referBean就是在创建currBean时第一次使用。

可以定义多个,用逗号、空格、分号分隔。

=== constructor-arg ===

注入依赖 - 构造方法注入
写在bean标签里面,每个构造方法的参数对应一个constructor-arg标签

index

表明这是构造方法的第几个参数

name

currBean的构造方法的参数名

ref

需要注入的Bean的id

=== property ===

注入依赖 - 属性注入

name

currBean的成员变量名,通过调用该变量的setter方法注入依赖。

value

需要赋给该变量的值(该变量必须是非引用类型)

ref

需要注入的referBean的id(该变量一般是引用类型)

例如:

<bean class="Address" id="addr"></bean>
<bean class="User">
    <property name="address" ref="addr"/>
</bean>

注意:
如果有constructor-arg与property标签同时修改一个成员变量,
那么先执行constructor-arg的依赖注入,再执行property的依赖注入。
总之,property会覆盖constructor-arg的依赖注入。


说明:以下四个标签是集合属性的赋值标签。

如果集合元素类型为基本数据类型,标签的type属性可省略。

=== list ===

给类型为List及其子类的属性赋值。
如果类型就是List,默认使用ArrayList来实现。
<list>
    <value>s1</value>
    <value>s2</value>
</list>
<list value-type="com.spring.bean.User">
    <ref bean="user1"/>
    <ref bean="user2"/>
</list>

=== set ===

给类型为Set及其子类的属性赋值。
<set>
    <value>s1</value>
    <value>s2</value>
</set>
<set value-type="com.spring.bean.User">
    <ref bean="user1"/>
    <ref bean="user2"/>
</set>

== map ==

给类型为Map及其子类的属性赋值。

<map>
    <entry key="1" value-ref="user1"/>
    <entry key="2" value-ref="user2"/>
</map>

=== props ===

Properties类型,键值为String类型的,所以直接写值。
<props>
    <prop key="1">s1</prop>
    <prop key="2">s2</prop>
</props>

作用是向Spring容器注册以下四个BeanPostProcessor:
1. AutowiredAnnotationBeanPostProcessor(使用@Autowired时需要)
2. CommonAnnotationBeanPostProcessor(使用@Resource时需要)
3. PersistenceAnnotationBeanPostProcessor(使用@PersistenceContext时需要)
4. RequiredAnnotationBeanPostProcessor(使用@Required时需要)

作用是自动扫描指定包名下所有标记有@Component,@Service,
@Repository,@Controller的类作为Bean。

注:由于<context:component-scan base-package=”xx.xx”/>也包含了
自动注入上述四个BeanPostProcessor的功能,所以<context:annotation-config/>
可以省略。如果两者都进行了配置,则只有前者有效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值