美文网首页Java学习笔记
spring学习笔记(三)——Bean的管理及自动装配

spring学习笔记(三)——Bean的管理及自动装配

作者: 顾烟凉 | 来源:发表于2018-07-18 14:05 被阅读0次

通过xml文件配置

  • 根据类型自动装配

如果一个bean的数据类型和其他bean属性的数据类型相同,可以自动兼容装配它,过程如下:
1.存在如下两个bean:dao和service

public class Dao{
      private Dao dao;
      ........
}
public class Service{
      private Service service;
      ........
}

通常情况下,我们使用明确装配,即为每一个bean单独创建配置并注入属性。当启用根据类型装配的时候,可以保留一个bean的属性未设置,spring会根据相同的数据类型自动装配它。

<bean id="dao" class="club.guyanliang.Dao" autowire="byType" />
    
    <bean id="service" class="club.guyanliang.Service" >
        <property name="skill" value="Invisible" />
    </bean>

需要注意的是,在根据类型自动装配的情况下,必须保证Bean只有一个唯一的数据类型声明,否则会报错UnsatisfiedDependencyException

  • 根据名字自动装配

还是以上Dao和Service两个bean为例:

    <bean id="dao" class="Dao"/>

    <bean id="service" class="Service" autowire="byName"/>

通过名字装配,无需再声明属性标记,spring会在service中寻找是否存在dao这个属性,再去IOC容器中寻找dao对象,如果有的话就装配。

使用注解自动装配

  • @Autowired

通常应用于一下场景:

  • 构造函数
  • 成员变量
  • Setter方法
  • 普通方法

要启用Autowired注解,首先我们要引入约束以及开启注解扫描

<beans 
    //...
    xmlns:context="http://www.springframework.org/schema/context"
    //...
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    //...

    <context:annotation-config />
    //...
</beans>

具体实现场景就不在此赘述,创建对象还有三个注解:

  • @Controller
  • @Service
  • @Repository
    目前这三个注解和autowired的作用时一样的,另外使用自动装配时,如果在应用上下文中,对应类型的Bean有且只有一个,则会自动装配到该属性上。

相关文章

网友评论

    本文标题:spring学习笔记(三)——Bean的管理及自动装配

    本文链接:https://www.haomeiwen.com/subject/iqhgpftx.html