Spring自动装配详解

在Spring中,支持 5 种装配模式。
  • no – 缺省情况下,自动配置是通过“ref”属性手动设定
  • byName – 根据属性名称自动装配。如果一个bean的名称和其他bean属性的名称是一样的,将会自装配它。
  • byType – 按数据类型自动装配。如果一个bean的数据类型是用其它bean属性的数据类型,兼容并自动装配它。
  • constructor – 在构造函数参数的byType方式。
  • autodetect – 如果找到默认的构造函数,使用“自动装配用构造”; 否则,使用“按类型自动装配”。
①.在没有配置autowire属性的情况下,缺省为no,即必须通过ref属性指定属性的值
手动装配我们通常在配置文件中进行实现,以下代码就是手动装配:
<bean id="helloWorldService" class="com.jeff.example.demo1.HelloWorldService"><property name="helloWorld" ref="structsHelloWorld"></property>
②.在autowire配置为byName的情况下,spring容器会自动查找bean中id与自身属性的name一致的相匹配,未找到时抛出空指针异常。
      需要注意的是,set方法必须为public,否则报NullpointException。
③.在autowire配置为byType的情况下,spring容器会自动查找bean类型中自身属性类型一致的相匹配,未找到时抛出空指针异常。
      需要注意的是,set方法必须为public,否则报NullpointException。
       类型自动装配的意思是如果一个bean的数据类型与其他的bean属性的数据类型相同,将会自动兼容装配它。当然要求只能配置一个某   一 个类型的bean.如果配置成这样,那么是会出错的。
<bean id="customer" class="com.hebeu.model.Customer" autowire="byType"></bean> <bean id="bean1" class="com.hebeu.model.Address"> <property name="fulladdress" value="YiLong Road, CA 188"></property> </bean> <bean id="bean2" class="com.hebeu.model.Address"> <property name="fulladdress" value="YiLong Road, CA 188"></property> </bean>

④.通过构造方法中的参数类型与bean中类型与自身参数类型去匹配然后自动装配。如找到多个会报NoUniqueBeanDefinitionException
所以必须要有构造函数,否则因为找不到而报空指针异常。
<bean id="helloWorldService" class="com.jeff.example.demo1.HelloWorldService" autowire="constructor"/><!-- 参数类型为HelloWorld,而下面两个bean都实现了此接口 --> <bean id="springHelloWorld" class="com.jeff.example.demo1.SpringHelloworld"/><!--不注释报错 <bean id="structsHelloWorld" class="com.jeff.example.demo1.StructsHelloworld"/> -->

⑤.不常用,感兴趣的可以自己去了解下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值