如何完成春天的最小化XML配置

  


  

  

<强> 1,四种类型的自动装配

              类型   解释   xml配置               别名   根据Bean的名称或者id   & lt; bean id=癰ean”类="…"自动装配="别名"/比;         ByType   根据Bean类型自动装配   & lt; bean id=癰ean”类="…"自动装配=癰yType”/比;         contructor   根据Bean的构造器入参具有相同类型   同上         自动检测   首先使用contructor,失败再尝试byType   同上               

byType在出现多个匹配项时不会自动选择一个然是报的错,为避免报错,有两种办法:1。使用& lt; bean>元素的主要属性,设置为首选豆,但所有豆的默认主都是真实的,因此我们需要将所有非首选豆设置为假;2。将Bean的autowire-candidate熟悉设置为false,取消这个Bean的候选资格,这个Bean便不会自动注入了。

  

contructor自动装配和byType有一样的局限性,当发现多个Bean匹配某个构造器入参时,弹簧不会尝试选择其中一个,此外,如果一个类有多个构造器都满足自动装配的条件,弹簧也不会猜测哪个更合适使用。

  

<强> 2,默认自动装配
  

  

如果需要为春天应用上下文中的每个Bean(或者其中的大多数)配置相同的自动装配属性,可以在根元素& lt; beans>上增加一个default-autowire属性,默认该属性设置为零。该属性只应用于指定配置文件中的所有Bean并不是弹簧上下文中的所有Bean。

  

<强> 3,混合使用自动装配和显式装配
  

  

当我们对某个Bean使用了自动装配策略,并不代表我们不能对该Bean的某些属性进行显示装配,任然可以为任意一个属性配置& lt; property>元素,显式装配将会覆盖自动装配。但是当使用构造函数自动装配策略时,我们必须让春天自动装配构造器所有入参,不能使用& lt; constructor-arg>元素进行混合。

  


  

  

从Spring2.5开始,可以使用注解自动装配Bean的属性,使用注解允许更细粒度的自动装配,可选择性的标注某一个属性来对其应用自动装配.Spring容器默认禁用注解装配,需要在春天配置中启用,最简单的启用方式是使用Spring的上下文命令空间配置中的& lt;上下文:annotation-config>如下所示:

        & lt;豆类…比;   & lt;上下文:annotation-config/比;   & lt; !——bean声明去这里比;   & lt;/beans>      

Spring3支持几种不同的用于自动装配的注解:

  
      <李>春自带的@ autowired注解   <李> jsr - 330的@ inject注解   <李> jsr - 250的@注解   
  

<强> 1,使用@ autowired
  

  

@ autowired用于对被注解对象启动ByType的自动装配,可用于以下对象:

  
      <李>类属性,即使私有属性也能注入李   <李>设置方法   <李>构造器李   <李>任意需要装配Bean的方法   
  

在使用@ autowired时有两种情况会出错:没有匹配的Bean和存在多个匹配的Bean,但是都有对应的解决方法。

  

当没有匹配Bean时,自动装配会抛出NoSuchBeanDefinitionException,如果不想抛出可使用要求属性,设置为false来配置可选的自动装配,即装配失败就不进行装配,不会报错。

        @ autowired(要求=false)      

当使用构造器配置时,只有一个构造器可以将要求属性设置为真,其他都只能设置为假的。此外,当使用注解标注多个构造器时,弹簧会从所有满足装配条件的构造器中选择入参最多的那个。

  

当存在多个豆满足装配条件时,春天也会抛出NoSuchBeanDefinitionException错误,为了选择指定的豆,我们可以使用@ qualifier注解进行筛选:
  

        @ autowired   @ qualifier (name1)//筛选名为name1的Bean   私人TestClass TestClass;      

除了通过Bean的ID来缩小选择范围,我们还可以通过直接在Bean上使用限定符来缩小范围,限制Bean的类型,xml如下:
  

        & lt; bean类=癱om.test.xxx”比;   & lt;限定符值=" https://www.yisu.com/zixun/stringed "/比;   & lt;/bean>      

注解如下:
  

        @ qualifier(“用”)   公开课xxx {}      

还可以创建自定义限定器(限定词)

如何完成春天的最小化XML配置