1、Bean的自动装配(xml形式)

  • 自动装配是使用spring满足bean依赖的一种方法
  • spring会在应用上下文中为某个bean寻找其依赖的bean。

1.新建两个实体类

public class Address {private String address;// get,set,toString
}
public class Student {private String name;private Address address;// get.set.toString
}

2.编写xml文件

ByName:按照名称自动装配

     <!-- 装配address --><bean id="address" class="com.lili.entity.Address"><property name="address" value="china"/></bean><!--根据名字自动装配--><bean id="student" class="com.lili.entity.Student" autowire="byName"><property name="name" value="qijingjing"/></bean>

测试:

    @Testpublic void test1(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");Student student = (Student) applicationContext.getBean("student");System.out.println(student);}

ByType:按照类型自动装配

   <!--根据名字自动装配--><bean id="student" class="com.lili.entity.Student" autowire="byType"><property name="name" value="qijingjing"/></bean>

小结

当一个bean带有autowire byName的属性时:

  • 将查找其类中所有的set方法名,例如setCat,获得将set去掉并且首字母小写的字符串,即cat。

  • 去spring容器中寻找是否有此字符串名称id的对象。

  • 如果有,就取出注入;如果没有,就报空指针异常。

当一个bean带有autowire byType的属性时:

  • bean里面的这个类型只能有一个,否则会报NoUniqueBeanDefinitionException异常

2、Bean的自动装配(注解形式)

利用注解的形式注入属性。

配置文件加入context约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"></beans>

开启支持注解的配置

<context:annotation-config/>

2.1、@Autowired

  • @Autowired注解相当于xml里面的byType,类型匹配,不支持id匹配

测试:在类中加入这个注解

public class Student {private String name;@Autowiredprivate Address address;// get.set.toString
}

此时配置文件内容:

<bean id="address" class="com.lili.entity.Address"><property name="address" value="china"/>
</bean><bean id="student" class="com.lili.entity.Student"><property name="name" value="qijingjing"/>
</bean><context:annotation-config/>

测试,成功输出结果。

扩展:@Autowired(required=false) 说明: false,对象可以为null;true,对象必须存对象,不能为null。

2.2、Qualifier

  • @Autowired是根据类型自动装配的,加上@Qualififier则可以根据byName的方式自动装配

  • @Qualififier不能单独使用。

修改配置文件

<bean id="address" class="com.lili.entity.Address"><property name="address" value="china"/>
</bean>
<!--这里再写一个关于address的bean-->
<bean id="address2" class="com.lili.entity.Address"><property name="address" value="china2"/>
</bean><bean id="student" class="com.lili.entity.Student"><property name="name" value="qijingjing"/>
</bean><context:annotation-config/>

在属性上加上@Qualifier注解

@Autowired
@Qualifier(value = "address2")
private Address address;

测试后,成功输出

2.3、@Resource

  • @Resource会先按byName的方式进行自动装配,如果不成功则会以byType的形式进行装配,都不成功,则会报错

这个就不在进行演示了

小结

@Autowired与@Resource异同:

  1. @Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。

  2. @Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualififier注解进行使用

  3. @Resource,默认按照名称进行装配,名称可以通过name属性进行指定。如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。

他们都是用注解的方式注入对象,但执行顺序不同,@Autowired先byType,@Resource先 byName。

spring中bean的自动装配(详细)相关推荐

  1. 详解Spring中Bean的自动装配~

    目录 1. 环境搭建 2. byName.byType 3. 使用注解实现自动装配 @Autowired @Resource 小结 自动装配是Spring满足bean依赖的一种方式 Spring会在上 ...

  2. Spring之Bean的自动装配

    Spring从入门到精通–(4)Spring之Bean的自动装配 作者:进击攻城狮 个人主页:欢迎访问我的主页 首发时间:2022年8月5日星期五 订阅专栏:Spring入门到精通 个人信条:星光不问 ...

  3. Spring之 Bean的自动装配

    什么是Spring Bean的自动装配? 自动装配是Spring满足bean依赖一种方式 Spring会在上下文种自动寻找,并自动给bean装配属性 Spring种有三种装配方式 1.在xml种显示配 ...

  4. Spring的Bean的自动装配属性autowire

    Spring自动注入 使用元素的 autowire 属性为一个 bean 定义指定自动装配模式 autowire设置值 no:没开启 byName: 根据bean的id名称,注入到对应的属性里面 by ...

  5. Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配

    一.Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过 ...

  6. ❤️Bean的自动装配(详细)

    ❤️Bean的自动装配(详细) 自动装配是Spring满足bean依赖的一种方式! Spring会在上下文中自动寻找,并自动给bean装配属性! 在Spring中有三种自动装配的方式 在xml中显示的 ...

  7. 请解释Spring Bean 的自动装配?

    在Spring 框架中,在配置文件中设定bean 的依赖关系是一个很好的机制,Spring 容器还可以自动装配合作关系bean 之间的关联关系.这意味着Spring 可以通过向Bean Factory ...

  8. Spring精华问答 | Spring Bean的自动装配是怎么回事?

    戳蓝字"CSDN云计算"关注我们哦! Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin ...

  9. [Spring]Bean的自动装配

    Spring支持5种自动装配模式,如下: 1.no --默认情况下,不自动装配,通过"ref"attribute手动设定. 2.buName --根据Property的Name自动 ...

  10. [Spring实战系列](12)Bean的自动装配

    Spring提供了4种各具特色的自动装配策略: 类型 说明 no 默认方式,Bean的引用必须通过XML文件中的</ref>元素或者ref属性手动设定. byName 把与Bean的属性具 ...

最新文章

  1. Matlab R2016a中如何完美运行“mex-setup”
  2. 【设计模式】-写在前面
  3. 基本类型与字符串之间的转换
  4. mysql dba系统学习(3)mysql的启动停止
  5. 需求入门 - 获取需求方法:Nine Boxes
  6. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十二)脚本更新3.1
  7. Android LocalBroadcastManager 的使用总结
  8. 计算机编程要哪方面天赋,编程要哪门子天赋
  9. linux怎样卸载conda,【原创文章】生信软件环境conda的安装与卸载
  10. POJ_2117 Elcctricity (tarjan 求割点)
  11. 部署和调优 2.1 squid正向代理
  12. Select2使用经验及多Jquery版本处理
  13. 华为交换机access、trunk、hybrid接口区别理解
  14. MySQL初始密码忘记了怎么办
  15. rknn模型转换问题记录
  16. element组件的表单验证手机号
  17. photoshop中魔棒使用方法
  18. windows常见开机报错码以及解决方法
  19. 农作物病害识别_FarmEasy:向农民推荐农作物变得容易
  20. Linux调试排错命令

热门文章

  1. VUE2.0 测试环境配置
  2. linux中执行命令权限不够怎样处理
  3. 见过NTP服务,没见过网络流量到200M左右的NTP服务
  4. CRM运维工程师主要职责
  5. C#创建单链表,翻转单链表
  6. Spring Boot 中实现定时任务的常用方式@Scheduled
  7. 企业真实面试题总结(一)
  8. the art of seo(chapter seven)
  9. 输入法相关的使用(跳转)
  10. Android CI with jenkins in ubuntu