Spring中bean的自动装配

一. 自动装配的实现

​ 自动装配的目标是不需要使用ref属性或者ref标签去引用其他的bean,而是通过自动的方式引用其他的bean。SpringIOC容器是可以自动装配bean的,需要的仅仅是在bean标签使用autowire属性指定自动装配的方式。

<?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:p="http://www.springframework.org/schema/p"

	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 

​		bean标签中使用autowire属性设置自动装配

​		autowire 表示自动装配,常用两个装配方式:

​			- byType : 根据类型自动装配,但是如果IOC容器中存在多个相同类型的bean,则无法判断到底使用哪个,报错。

​			- byName : 根据名称自动装配,必须要求person这个bean的属性要求和被自动装配的bean的名称要一致

​	 --><bean id="person" class="com.nhkj.autowire.Person" p:name="jjm" p:age="30" autowire="byName"><!-- <property name="car" ref="car"></property> --></bean>
    
    	<bean id="car" class="com.nhkj.autowire.Car" p:barnd="Chery" p:color="gold" p:maxSpeed="200" p:price="60000"></bean>
	<bean id="car2" class="com.nhkj.autowire.Car" p:barnd="BYD" p:color="gold" p:maxSpeed="200" p:price="60000"></bean>

</beans>
二. 自动装配的优缺点
  • 在bean的配置文件里面设置autowire属性进行自动装配将会装配bean的所有属性,但是如果只希望装配个别的属性的时候,autowire这个时候就显得不够灵活了
  • autowire属性要么根据名称要么根据类型自动装配,不能够两者兼而有之
  • 一般情况下,在基于xml的Spring配置中,很少去使用自动装配的功能,因为和自动装配带来的好处相比,明确清晰的配置文档更具有说服力。
  • 在后期的注解过程中,我们会大量的使用autowire进行自动装配,一般在三层架构的开发中,控制层引用Service层【业务层】,业务层引用数据访问层,都只会在IOC容器中存在一个bean,所以不会存在根据类型匹配不上,或者匹配过多的问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Springbean的自动装配有几种方式。一种是通过ByType自动装配,即Spring会自动在容器上下文查找和自己对象属性类型相同的bean,并将其注入到属性。需要注意的是,所有的bean的class必须唯一,并且这个bean需要和自动注入的属性保持一致。可以在配置文件使用autowire="byType"来实现这种自动装配方式。\[1\] 另一种方式是使用注解实现自动装配。可以在bean的属性上使用@Autowired注解,Spring会自动在容器上下文查找和属性类型相同的bean,并将其注入到属性。需要在配置文件加入context约束,即在配置文件的根元素添加context命名空间的声明。\[2\]\[3\] 总结起来,Springbean自动装配可以通过ByType自动装配和使用注解实现自动装配两种方式来实现。 #### 引用[.reference_title] - *1* [SpringBean的自动装配](https://blog.csdn.net/weixin_44107140/article/details/119154162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [springbean的自动装配(详细)](https://blog.csdn.net/qijing19991210/article/details/119712328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值