spring in action-最小化spring XML配置

内容预览:

  • Bean的自动装配
  • Bean的自动检测
  • 面向注解的Bean装配
  • 基于java的spring配置

一.首先要了解什么是spring装配?

  创建应用组件之间相互协作关系的行为就是装配

spring中提供了几种技巧帮助我们来减少XML的配置数量

  1. 自动装配:有助于减少甚至消除配置<property><constructor-arg>元素,让spring自动识别如何装配Bean的依赖关系
  2. 自动检测:比自动装配更进了一步,让spring自动识别哪些类需要被配置成spring Bean,从而减少对<bean>元素的使用
    当自动装配和自动检测一起使用时,可以显著的减少spring中XML的配置数量

二.自动装配Bean属性

1.- 4中类型的自动装配,如下图所示:
这里写图片描述

byName自动装配:
这里写图片描述

这里写图片描述
byType自动装配:spring会寻找哪一个bean的类型与属性的类型相匹配:
这里写图片描述
constructor自动装配:
这里写图片描述
最佳自动装配:如果想自动装配,但是又不能确定使用哪一种自动装配的时候,我们可以设置autowire属性值为autodetect,由spring来决定使用哪一种类型的自动装配
这里写图片描述
当配置一个bean的autowire属性值为autodetect的时候,spring将首先尝试使用constructor自动装配,如果没有发现与构造器相匹配的bean,spring将尝试使用byType自动装配

2.默认自动装配:如果要为spring应用上下文中的所有Bean配置相同的autowire属性值得时候就适合这种方式

这里写图片描述
3.混合使用自动装配和显示装配:如果在spring上下文中有多个Bean实现了某一接口,为了避免spring无法从这几个实现了相同的接口的Bean中进行明确挑选而抛出异常,我们就可以此采用显示装配某一属性来覆盖自动装配
这里写图片描述

三.使用注解装配

spring容器默认禁用注解配置,所以在使用基于注解的自动装配前,我们要在spring中启用它,最简单的启用方式就是使用spring的context命名空间中配置的<context:annotation-config>元素,如下图所示:
这里写图片描述
spring3 支持几种不同的用于自动装配的注解:
这里写图片描述

1.使用@Autowired:适用于应用中 必须只能有一个Bean适合装配到@Autowired注解多标注的属性或参数中,如果没有匹配的Bean或者有多个匹配的Bean则需要另外的解决办法
这里写图片描述
   1.1可选的自动装配->没有匹配的Bean:
这里写图片描述
   1.2限定歧义性的依赖->有多个匹配的Bean:为了帮助@Autowired鉴定出哪一个才是需要的Bean,我们需要配合使用spring的@Qualifier注解:
这里写图片描述
2.借助@Inject实现基于标准的自动装配
这里写图片描述
   2.1限定@Inject所标注的属性:
这里写图片描述
3.在注解注入中使用表达式
这里写图片描述

四.自动检测Bean

   为了配置spring的自动检测,需要配置<context:component-scan>元素,它完成了与<context:annotation-config>一样的工作,还允许spring自动检测Bean和定义Bean,这意味着不用bean元素,spring应用中大多数的Bean都可以实现定义和装配,配置方式如下图所示:
这里写图片描述

1.为自动检测标注Bean
这里写图片描述
spring在扫描包的时候发现了使用@Component等注解所标注的类时就会将它注册为spring Bean,Bean 的ID为类名首字母小写;如果制定了一个Bean ID作为@Component(“eddie”)的参数,则Bean的ID就不能使用默认的了,需采用制定的ID名
2.过滤组件扫描

这里写图片描述
这里写图片描述
这里写图片描述

   2.1:
这里写图片描述

五.使用spring基于java的配置

1.创建基于java的配置:spring的java配置可以让我们不使用XML就可以编写大多数的spring配置,但我们仍然需要极少量的XML来启用java配置
这里写图片描述

2.定义一个配置类:
这里写图片描述
3.声明一个简单的Bean:
这里写图片描述
4.使用spring的基于java的配置进行注入
这里写图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值