Spring的bean自动装配

基于xml自动装配

	//使用设值注入方式装配Person实例
    <bean id="person1" class="com.mengma.assembly.Person">
        <property name="name" value="zhangsan" />
        <property name="age" value="20" />
    </bean>
    //使用构造方法装配Person实例
    <bean id="person2" class="com.mengma.assembly.Person">
        <constructor-arg index="0" value="lisi" />
        <constructor-arg index="1" value="21" />
    </bean>

bean标签属性:

  • autowire=“default/no”:不自动装配,不自动为bean赋值
  • autowire=“byName”:按照名字自动装配,以属性名作为id去容器中找到这个组件,给他赋值,如果找不到就装配null
  • autowire=“byType”:以属性的类型作为查找依据去容器中找这个组件,如果容器中有多个这种类型的组件会报错,找不到装配null
  • autowire=“constructor”:按照构造器进行赋值
    1.先按有参构造器的类型进行装配,没有直接装配null
    2.如果按照类型找到了多个,参数的名作为id继续匹配,找不到装配null
    3.不会报错

基于注解自动装配

  • @Qualifier(“指定id名”):指定一个id名,让spring别使用变量名作为id
  • @Autowired(request=false):request默认为true,装配不上会报错,设为false,若装配不到匹配的,则装配Null
    :方法上有@Autowire:这个方法也会在bean创建的时候自动运行 ,这个方法上的每一个参数都自动注入值

@Autowired、@Resource、@Inject都是自动装配,区别:
@Autowired最强大,是spring自己的注解
@Resource扩展性更强,如果换另一个容器框架,它也可以使用
@Inject是EJB的


Spring容器其实是一个map,这个map中保存所有创建好的bean,并提供外界获取功能【工厂模式是spring中最大的模式】
BeanFactory和ApplicationContext区别:

  • ApplicationContext是BeanFactory的子接口
  • BeanFactory:bean工厂接口,负责创建bean实例,容器里面保存的所有单例bean其实是一个Map
  • ApplicationContext:是容器接口,更多的负责容器功能的实现(可以基于BeanFactory创建好的对象之上完成强大的容器)
  • BeanFactory是最顶层的接口,ApplicationContext是留给程序员用的ioc接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值