Spring IoC容器与Bean管理22:使用注解方式实现Spring IoC三:自动装配注解(对象依赖注入);自动装配注解之【按类型装配注解】(@Autowired)的使用和缺点;

说明:

(1)在【Spring IoC容器与Bean管理21:使用注解方式实现Spring IoC二:组件类型注解(对象实例化);@Repository,@Service,@Controller,@Component;】中,仅仅介绍了实例化对象,但是没有涉及为对象的属性注入数据;本博客中介绍的【自动装配注解】,其目的就是实现对象的依赖注入;

(2)【自动装配注解】包括【按类型装配注解】和【按名称装配注解】;

(3)本篇博客主要介绍以【@Autowired】注解为例,介绍【自动装配注解】中的【按类型装配注解】的使用和缺点;

(3)本篇博客,沿用【Spring IoC容器与Bean管理21:使用注解方式实现Spring IoC二:组件类型注解(对象实例化);@Repository,@Service,@Controller,@Component;】中的代码s08;

目录

 一:自动装配注解简介

0.【按类型装配】注解和【按名称装配】注解简述:

1.【按类型装配】的注解:@Autowired和@Inject:

2.【按名称装配】的注解:@Named和@Resource:

 二:自动装配注解:之【按类型装配】注解:之@Autowired注解

1.@Autowired注解用法:【在属性上使用@Autowired注解】和【在set方法上使用@Autowired注解】

策略一:在userDao属性上使用@Autowired注解

策略二:在setUserDao()方法上使用@Autowired注解

区别分析:

2.@Autowired注解用法:缺点和问题

(1)演示:为什么,在工作中,不推荐使用【按类型装配注解】;

(2)使用【按类型装配注解】,如何解决【由于IoC容器中出现多个相同类型的对象,从而导致的NoUniqueBeanDefinitionException】的问题?


 一:自动装配注解简介

0.【按类型装配】注解和【按名称装配】注解简述:

          ● 【按名称装配】:在【Spring IoC容器与Bean管理12:IoC在项目中的作用;】中的s04项目为例:

在绝大多数场景下,我们都是采用【按名称装配】的策略;

          ●【按类型装配】:不需要关心在IoC容器中,bean的名称是什么;在运行过程中为属性注入值时,只需要从IoC容器中获取对应类型的对象,然后完成自定注入;

1.【按类型装配】的注解:@Autowired和@Inject:

          ● @Autowired:这个是Spring提供的,即这是Spring自己提供的规范;

          ● @Inject:由JSR-330(Java规范要求第330号文件,这个文件是Java领域的标准和业界的规范)提供的标准;自然Spring对JSR-330也提供了支持;

           ● @Autowired和@Inject这两个【按类型装配】的注解,不推荐使用;更多的时候,鼓励使用【按名称装配】的注解;

2.【按名称装配】的注解:@Named和@Resource:

          ● @Named:这个注解要和@Inject注解匹配使用;即在@Inject注解后,增加@Named注解,其会按照属性名(或者其他自定义的规则)完成对象的装配;同时@Named也是JSR-330(Java规范要求第330号文件,这个文件是Java领域的标准和业界的规范)提供的标准

          ● @Resource:这个注解出现的较早,是JSR-250提供的标准;这个注解不但可以按照名称进行依赖注入,如果不满足按名称进行依赖注入时,其也能自动按类型装配;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值