@Resource和@Autowired区别

两者谁是类型注入谁是名称注入?

@Resource注解有两个属性,name和type,没有选择属性,默认是ByName自动注入,有选择属性,则根据对应name或type的属性注入
ps:@Resource(name=“userDao”)
@Autowired只是按照byType注入,根据对象的类型注入,如果需要通过Byname方式 ,需要使用@Qualifier,如果要允许null值,可以设置它的required属性为false
ps:资源(@Resource)默认名称ByName,简称资源名.

补充内容(什么是自动装配? )

Spring IoC容器通过自动装配(autowire)规则(5种),自动建立对象之间的依赖关系.而spring框架式默认不支持自动装配的,要想使用自动装配,则需要修改spring配置文件中标签的autowire属性。

补充内容(说一说什么是byname,bytype注入)

在spring中:xml有多种注入的方式:属性注入,set 方法注入,构造方法注入,注解(byname,bytype)注入.
Bean装配一般分为三步:注册、扫描、注入。
这里只说下注入:详细可看下最下面参考文章:
byname:通过Bean的属性名称(id或name)自动装配。
(1)将查找其类中所有的set方法名,例如setCat,获得将set去掉并且首字母小写的字符串,即cat。
(2)去spring容器中寻找是否有此字符串名称id的对象。
如果cat 的bean id修改为 catXXX,此时byName规则找不对应set方法,或者原先注入了@Autowired Cat cat ,会去spring容器找,找不到对应名称catXXX 此时报空指针异常.
一个博客的举例:

    <bean id = "cat" class="com.hello.pojo.Cat"/>
    <bean id = "dog" class="com.hello.pojo.Dog"/>
    <bean id = "people" class="com.hello.pojo.People" autowire="byName">
        <property name="name" value="wzh"/>
    </bean>
————————————————
版权声明:本文为CSDN博主「king_weng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/King_weng/article/details/122057561

byType:通过Bean的Class类型来自动装配。使用autowire byType首先需要保证:同一类型的对象,在spring容器中唯一。如果不唯一,会报不唯一的异常。
在Spring Boot中:通过一个大的复合注解@SpringBootApplication,里面包括(@ComponentScan和@SpringBootConfiguration@EnableAutoConfiguration),使得启动类直接就可以作为配置类使用,并且减少了Bean扫描这一步
对于注入,@EnableAutoConfiguration这个注解扫描依赖包dependence中需要Auto Configuration的内容,然后根据yml进行配置

说一下SpringBoot自动装配原理(相关面试题)

未完待续…

有相关错误地方或者建议,评论dd下小编.
感谢阅读.

参考文章:https://juejin.cn/post/6844903919127101454#heading-8(Bean装配,从Spring到Spring Boot)
参考文章;https://blog.csdn.net/King_weng/article/details/122057561

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值