autowire的五种方式

1、no:不自动装载

2、byName:根据实例变量名称自动装载

        按照类中声明的实例变量的名称,与XML配置文件中声明的bean定义的beanName的值进行匹配,相匹配的bean定义将被自动绑定到当前实例变量上。这种方式对类定义和配置的bean定义有一定的限制代码如下:

        public class Xxx{

                private   UserService  userService;

        }

        <bean id="xxx" class="com.xxx...Xxx" autowire="byName"></bean>

        <bean id="userService" class="com.xxx...UserService"></bean>

         此处Xxx中的变量userService的名字和配置文件中UserService的bean的id一致

3、byType:根据实例变量类型自动装载

       按照类型个什么的变量的类型,在容器管理处找到变量类型相同的bean的定义,找到之后自动绑定

       public class Xxx{

                private   UserService  userService;

        }

        <bean id="xxx" class="com.xxx...Xxx" autowire="byType"></bean>

        <bean id="userService1" class="com.xxx...UserService"></bean>

        此时Xxx中的变量名userService可以和配置文件中的UserService的bean的id不一致,因为此时是根据类型绑定的,但是如果出现两个或多个同类型的bean定义,将出错,需要自己手动指定

4、constructor:根据构造方法参数类型自动装载

       public class Xxx{

                private   UserService  userService;

                public Xxx(UserService userService){

                         this.userService = userService;

                }

        }

       <bean id="xxx" class="com.xxx...Xxx" autowire="constractor"> </bean>
        <bean id="userService1" class="com.xxx...UserService"></bean>

        这个跟 byType装载有些相似,如果容器中出现两个相同UserService类型的对象,就会报错

5、autodetect:byType方式和constructor方式结合

       text-transform: none; white-space: no如果对象拥有默认无参数的构造方法,容器会优先考虑byType的自动绑定模式。否则,会使用constructor模式。当然,如果通过构造方法注入绑定后还有其他属性没有绑定,容器也会使用byType对剩余的对象属性进行自动绑定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值