Spring学习之Bean的装配

一、Spring配置概述

1.Spring容器的启动需要下列条件达成:

(1)Spring框架需要的类包已经放在应用程序的类路径下;

(2)bean之间的依赖关系已经配置好;

(3)bean的类已经放在应用程序类路径下。

Spring在启动时,会根据bean的配置信息在bean容器中生成bean的配置注册表,然后根据注册表生成bean的实例,装配好Bean之间的依赖关系,供应用程序调用。各部分之间的联系如下图:

2.Bean配置的元数据信息在Spring容器内部的对应物是一个个由BeanDefinition组成的配置注册表。元数据信息由4部分组成:

(1)bean的实现类

(2)bean的属性信息

(3)bean的依赖关系

(4)bean的行为信息,如生命周期scope等。

3.XML的配置

xml文件是Spring容器中配置文件的基本格式之一,它基于xml schema文件来指定命名空间,示例如下图:

(1)xmlns:默认命名空间,在Spring中用于Spring Beans的定义 ,即如果元素无前缀则默认为bean;

(2)xsi标准命名空间:用来标明自定义命名空间的schema文件及其位置;

(3)aop自定义命名空间:定义之后,可以在文中以<aop:config.../>等形式来简化元素书写。

 

二、基于xml的配置

1.bean的命名

(1)一般要为bean指定id属性作为bean的命名,这个命名在容器中必须要唯一。并且,要符合命名规范,以字母、下划线、连线符、数字、句号、冒号等完整结束的符号,逗号空格为非法。

(2)如果不指定id属性,则要指定name属性,这个name属性在容器中可以不唯一,使用时容器会返回name属性相同的后面的那个bean,将前面的bean覆盖掉。

(3)如果id和name属性两个都不指定,则以全限定类名为bean的名字。

2.属性注入

(1)示例:

 

(2)要注意java类代码中的属性的命名规范,开头两个字母要么小写要么大写,要保持一致,尽量使用驼峰命名方法。例如,iDCard,iCCard非法,IDCard,idCard则合法。

3.构造器注入

(1)按类型入参,示例:

 

(2)按索引入参,示例:

 

(3)类型和索引结合,多个构造器类似时使用,示例:

 

(4)根据自身类型反射入参,即根据值的类型,容器自动匹配对应类型参数,示例:

 

4.工厂方法注入

(1)非静态工厂方法:

(2)静态工厂方法:

 

5.注入参数

(1)字面值

对于基本数据类型和他们的封装类型,String类型,直接采用<value = .../>;

对于一些特殊字符,要采用替代符号,如图:

 

(2)引用其他Bean

上面<ref ..>里还可以有parent代替bean来表示依赖父容器里的bean,local表示本地容器里的。

(3)内部bean

内部bean只会被外部bean依赖,且bean范围系统设为prototype

(4)null值

(5)集合类

list类型:

set类型

map类型

 

6.p命名空间

 

7.lookup方法注入

相当于为MagicBoss接口提供了一个实现。

 

8.bean之间的关系

(1)继承

子bean中的属性会覆盖父bean中相同的属性,没有赋值的属性则会继承。

(2)依赖

使用depend-on显式依赖前置bean,则会在本bean之前实例化前置bean

(3)引用

<idref>标签会在Spring容器启动前检查引用关系的正确性,可以提前发现错误

 

9.bean作用域

(1)

(2)

 

三、基于注解的配置

1.注解

(1)@Component 表示对bean的注解,又可细分一些三种

@Repository表示对Dao层Bean的注解

@Service表示对service层的注解

@Controller表示对controller层的注解

(2)@Autowired自动根据类成员的类型装配bean,required属性默认为TRUE,表示找不到对应类型的bean时报错;

同时可以使用@Qualifier(“beanname”)表示注入对应bean名称的bean;

可以使用@Lazy延迟注入;

当标注的类型为集合类的时候,容器类型相同的bean都会注入该变量。

2.扫描注解

(1)定义扫描包

(2)过滤

(3)生命过程

@Scope(“prototype”)指定Bean作用范围

@PostConstruct和@PreDestroy指定初始和销毁前的方法

 

(基于java类的配置方式和Groovy DSL的配置方式省略,后面的总结有简单介绍)

 

四、各种配置方式的总结

 

参考:陈雄华《精通Spring4.x》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值