Spring in action笔记

第一部分 spring的核心

第一章 开始spring之旅

spring的主要特性是控制反转/依赖注入IoC/DI和面向切面编程AOP

第二章 基本Bean装配

2.1.1 BeanFactory

BeanFactory是spring的基础,负责创建和分发Bean。在xml中配置好相关bean之后:

BeanFactory bf = new XmlBeanFactory(new FileSystemResource("src/com/test/bean.xml"));
B b1 = (B) bf.getBean("b");
2.1.2 应用上下文

ApplicationContext实际是BeanFactory的更高级封装,提供了一些附加功能,比如aop支持等等,几乎所有系统都会选择用ApplicationContext而不是BeanFactory。与上面相同xml配置下:

/*  ApplicationContext ac = new FileSystemXmlApplicationContext("src/com/test/bean.xml");  */
  ApplicationContext ac = new ClassPathXmlApplicationContext("com/test/bean.xml");
  B b1 = (B) ac.getBean("b");
2.3 注入Bean属性

可通过构造函数或setter方法注入,

 

<bean id="b" class="com.test.Bimpl">
 <constructor-arg value="xxxxxxxxxxxxxxx" />
  <property name="a" ref="a" />
 </bean>

注入基本类型:

<property name="a" value="1" />


注入其他bean:(先定义bean,然后ref引用)

<property name="a" ref="beanID" />

 

 

<ref bean="beanID2"/>

 

</list>

 

<set>同上。

 

<map>

<entry key="ABC" value-ref="abc">  //key 为string   value为bean引用

 

<entry key-ref="ABC" value="abc">  //key-ref 为bean引用  value 为string  

</map>

 

<props>

<prop key="ABC">abc</prop>

</props>

 

注入空值:

<null/>

2.4 自动注入

常用的两种:byName和byType

如果找到多个或一个没找到,都会抛出异常。

<bean id="b" class="com.test.Bimpl" autowire="byType" >

  <constructor-arg value="xxxxxxxxxxxxxxx" />
  <property name="a" ref="a" />
 </bean>

 

全局默认设置:

<beans default-autowire="byName">

 

2.5 控制bean创建

默认时,所有spring bean都是单一的,也就是默认注入时,都是用容器内的该bean的同一个实例。

加如下属性可以控制bean范围:

<bean id="b" class="com.test.Bimpl" scope="prototype" >

 

bean范围:

    1、singleton  每个spring容器内就一个实例(默认)

    2、prototype 每次分配都是新的实例

 

 

注:通常的单例模式和上述的spring singleton是有区别的,spring singleton只是保证在spring 容器中是单例的。如果要实现通常的单例模式,通常采用private构造函数,并提供单一实例获取的统一方法来实现。因此可以配置通过非构造函数的某一方法来实例化bean,如下:

<bean id="b" class="com.test.Bimpl" factory-method="getInstanceMethod" >

 

 

注入集合:

spring支持的4种集合注入

<list>:允许重复

<set>:不允许重复

<map>:值对

<props>:String对

<list>

<ref bean="beanID1"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值