Spring-自动装配

1.通过xml配置文件中的autowire来实现spring的自动装配,目的是为了简化Spring的配置

1.自动装配的几种方式:

1.ByName:通过我们注入的Bean对象中设置的autowire="ByName",得到Bean对象中的需要的依赖对象的属性的名称(也就是set方法的属性名称,也就是说所依赖对象的属性必   须有setter方法),然后查找所依赖的对象是否被Spring容器创建,如果已经创建,则会把我们所依赖的对象自动注入进来,如果没有创建,则不会注入

<bean id="studentDAO" class="com.ioc.demo.StudentDAO"></bean>

<bean id="student" class="com.ioc.demo.Student" autowire="byName"></bean>

2.如果我们一个Bean对象要依赖多个对象,这个时候我们在使用ByName会非常麻烦,所以Spring为我们提供了一种配置全局自动装配都使用ByName方式

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd" default-autowire="byName">

3.ByType:通过我们注入的Bean对象中设置的autowire="ByType",找到我们所依赖对象的setter方法里面的参数类型,根据参数类型去Spring容器中查找Bean对象,如果已经创建,则会把我们所依赖的对象自动注入进来,如果没有创建,则不会注入

  4.在使用BytType方式装配时,被依赖的Bean对象可以忽略id,但是不允许有两个相同类型的Bean对象,否则会报错

  5.no:表示不设置装配方式

6.constructor:使用有参构造器来装配,当我们使用构造器来实例化对象的时候,推荐使用ByType方式来装配

  1.No:即不启用自动装配。Autowire默认的值。默认情况下,需要通过"ref"来装配bean,

2.byName:按名称装配? 可以根据属性的名称在容器中查询与该属性名称相同的bean,如果没有找到,则属性值为null
3.byType:按类型装配? 可以根据属性类型,在容器中寻找该类型匹配的bean,如有多个,则会抛出UnsatisfiedDependencyException异常,如果没有找到,则属性值为null。
4.constructor:与byType方式相似,不同之处在与它应用于构造器参数,如果在容器中没有找到与构造器参数类型一致的bean,那么将抛出异常。(根据构造函数参数的数据类型,进行byType模式的自动装配。)
5.autodetect:通过bean类的自省机制(introspection)来决定是使用constructor还是byType的方式进行自动装配。如果Bean有空构造器那么将采用“byType”自动装配方式,否则使用“constructor”自动装配方式。
6.default:由上级标签<beans>的default-autowire属性确定。

7.注意:在配置bean时,<bean>标签中Autowire属性的优先级比其上级标签高,即是说,如果在上级标签中定义default-autowire属性为byName,而在<bean>中定义为byType时,Spring IoC容器会优先使用<bean>标签的配置。

8.我们不推荐使用自动装配,推荐使用annotation(注解)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot的自动装配原理是通过扫描外部引用jar包中的META-INF/spring.factories文件来加载配置信息,并将配置的类型信息加载到Spring容器中,并执行相应的操作。\[1\]在SpringBoot中,我们只需引入对应的starter依赖,就可以自动完成对第三方依赖的配置操作,无需手动编写特定的bean。\[1\] 具体实现原理是通过在resources目录下创建一个spring.factories文件,文件中配置了需要自动装配的类的全限定名,使用@EnableAutoConfiguration注解来启用自动装配。\[2\]在SpringBoot的主启动类上使用@SpringBootApplication注解,该注解包含了@SpringBootConfiguration、@ComponentScan和@EnableAutoConfiguration三个注解。其中@SpringBootConfiguration注解表示该类是SpringBoot的配置类,@ComponentScan注解用于扫描被@Component注解的bean,@EnableAutoConfiguration注解是自动装配的核心注解。\[3\] 总结起来,SpringBoot的自动装配原理是通过扫描外部引用jar包中的配置文件,加载配置信息,并根据配置信息自动完成对第三方依赖的配置操作,简化了开发者的配置工作。 #### 引用[.reference_title] - *1* *2* *3* [Springboot的自动装配原理](https://blog.csdn.net/weixin_43324905/article/details/123949084)[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^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值