spring中bean的自动装配(详细)
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异同:
@Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。
@Autowired默认按类型装配(属于spring规范),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualififier注解进行使用
@Resource,默认按照名称进行装配,名称可以通过name属性进行指定。如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。
他们都是用注解的方式注入对象,但执行顺序不同,@Autowired先byType,@Resource先 byName。
spring中bean的自动装配(详细)相关推荐
- 详解Spring中Bean的自动装配~
目录 1. 环境搭建 2. byName.byType 3. 使用注解实现自动装配 @Autowired @Resource 小结 自动装配是Spring满足bean依赖的一种方式 Spring会在上 ...
- Spring之Bean的自动装配
Spring从入门到精通–(4)Spring之Bean的自动装配 作者:进击攻城狮 个人主页:欢迎访问我的主页 首发时间:2022年8月5日星期五 订阅专栏:Spring入门到精通 个人信条:星光不问 ...
- Spring之 Bean的自动装配
什么是Spring Bean的自动装配? 自动装配是Spring满足bean依赖一种方式 Spring会在上下文种自动寻找,并自动给bean装配属性 Spring种有三种装配方式 1.在xml种显示配 ...
- Spring的Bean的自动装配属性autowire
Spring自动注入 使用元素的 autowire 属性为一个 bean 定义指定自动装配模式 autowire设置值 no:没开启 byName: 根据bean的id名称,注入到对应的属性里面 by ...
- Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
一.Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过 ...
- ❤️Bean的自动装配(详细)
❤️Bean的自动装配(详细) 自动装配是Spring满足bean依赖的一种方式! Spring会在上下文中自动寻找,并自动给bean装配属性! 在Spring中有三种自动装配的方式 在xml中显示的 ...
- 请解释Spring Bean 的自动装配?
在Spring 框架中,在配置文件中设定bean 的依赖关系是一个很好的机制,Spring 容器还可以自动装配合作关系bean 之间的关联关系.这意味着Spring 可以通过向Bean Factory ...
- Spring精华问答 | Spring Bean的自动装配是怎么回事?
戳蓝字"CSDN云计算"关注我们哦! Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin ...
- [Spring]Bean的自动装配
Spring支持5种自动装配模式,如下: 1.no --默认情况下,不自动装配,通过"ref"attribute手动设定. 2.buName --根据Property的Name自动 ...
- [Spring实战系列](12)Bean的自动装配
Spring提供了4种各具特色的自动装配策略: 类型 说明 no 默认方式,Bean的引用必须通过XML文件中的</ref>元素或者ref属性手动设定. byName 把与Bean的属性具 ...
最新文章
- Matlab R2016a中如何完美运行“mex-setup”
- 【设计模式】-写在前面
- 基本类型与字符串之间的转换
- mysql dba系统学习(3)mysql的启动停止
- 需求入门 - 获取需求方法:Nine Boxes
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十二)脚本更新3.1
- Android LocalBroadcastManager 的使用总结
- 计算机编程要哪方面天赋,编程要哪门子天赋
- linux怎样卸载conda,【原创文章】生信软件环境conda的安装与卸载
- POJ_2117 Elcctricity (tarjan 求割点)
- 部署和调优 2.1 squid正向代理
- Select2使用经验及多Jquery版本处理
- 华为交换机access、trunk、hybrid接口区别理解
- MySQL初始密码忘记了怎么办
- rknn模型转换问题记录
- element组件的表单验证手机号
- photoshop中魔棒使用方法
- windows常见开机报错码以及解决方法
- 农作物病害识别_FarmEasy:向农民推荐农作物变得容易
- Linux调试排错命令