Spring中我们可以使用以下三个自动装配的注解进行依赖注入:
| 注解 | 所在包 | 来源 |
| --- | --- | --- |
| @Autowired | org.springframework.beans.factory.annotation.Autowired | Spring自带的注解 |
| @Resource | javax.annotation.Resource | JSR-250标准的注解 |
| @Inject | javax.inject.Inject | JSR-330标准的注解 |
* @Autowired注解默认是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,当没有找到相应bean的时候,IOC容器就会报错。不过@Autowired有个required属性,可以配置为false,如果配置为false之后,当没有找到相应bean的时候就注入null,系统不会抛错。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。
* @Resource默认按照名字(byName)装配依赖对象,由JAVAEE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。
* @Inject注解默认也是按照类型(byType)装配依赖对象,如果需要按名称进行装配,则需要配合@Named注解。@Inject 注解没有 required 属性,因此在找不到合适的依赖对象时 inject 会系统会报错失败
> spring @Autowired 注解默认按类型自动装配,当有多个bean能匹配上时将自动切换成按名字(byName)装配,若按名字无法装配时将抛出BeanCreateException
- 概述
- Spring的使命
- 环境变量
- spring架构
- Spring各版本特性
- Spring3.1新特性
- spring顶级项目
- spring基础
- spring环境变量
- 依赖注入
- spring获取bean方法
- BeanFactory vs FactoryBean
- JavaBean装配
- XML显式配置
- 基于JAVA配置
- 自动化装配bean
- SpringBean的作用域
- Spring应用上下文实现
- springbean的生命周期
- 自定义Bean的创建与销毁
- Spring容器启动过程
- spring加载xsd文件的流程
- spring扩展接口
- Spring主要类功能说明
- spring事务管理
- 事务特性
- 数据库事务隔离级别
- 事务隔离性问题
- spring事务隔离级别
- 事务传播行为
- @Transactional
- 循环依赖
- 构造器注入
- 循环依赖原理
- spring循环依赖原理
- spring三级缓存
- Spring注解
- @Component
- @ComponentScan
- @Autowired
- @Import
- @ImportResource
- @Profile
- @Conditional
- @Qualifier
- @Scope
- @PropertySource
- @Value
- @EnableScheduling
- SpEL-Spring表达式
- Spring-AOP
- SpringAOP五种通知类型
- AOP术语
- SpringMVC
- MVC原理图
- SpringMVC工作原理
- springboot
- @SpringCloudApplication
- springboot tomcat配置
- Spring Boot Starter POMs
- Spring Boot technical starters
- spring boot事件类型
- Springboot日志
- SpringCloud
- springcloud微服务解决方案
- 服务组件
- 注册中心
- Eureka
- Spring Cloud Zookeeper
- nacos
- Hystrix熔断原理
- Hystrix应用
- Spring Cloud Config
- 服务网关
- Zuul
- Spring Cloud Gateway
- 服务调用及负载
- Ribbon
- Feign&OpenFeign
- Turbine
- actuator
- springboot & springcloud
- springcloud vs dubbo
- 常见面试题
- BeanFactory和FactoryBean
- @Autowired/@Resource和@Inject的区别
- Singleton bean注入prototype bean
- 附录