查看“@Autowired 是如何工作的”的源代码
←
@Autowired 是如何工作的
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
@Autowired 表示某个属性是否需要进行依赖注入,可以写在属性和方法上。 注解中的 required 属性默认为 true,表示如果没有对象可以注入给属性则抛异常。<syntaxhighlight lang="java"> @Service public class OrderService { @Autowired private UserService userService; } </syntaxhighlight>@Autowired 加在某个属性上,Spring 在进行 Bean 的生命周期过程中,在属性填充这一步, 会基于实例化出来的对象,对该对象中加了 @Autowired 的属性自动给属性赋值。 Spring 会先根据属性的类型去 Spring 容器中找出该类型所有的 Bean 对象, 如果找出来多个,则再根据属性的名字从多个中再确定一个。 如果 required 属性为 true,并且根据属性信息找不到对象,则直接抛异常。 <syntaxhighlight lang="java"> @Service public class OrderService { private UserService userService; /** * @param userService the userService to set */ public void setUserService(UserService userService) { this.userService = userService; } } </syntaxhighlight>当 @Autowired 注解写在某个方法上时,Spring 在 Bean 生命周期的属性填充阶段, 会根据方法的参数类型、参数名字从 Spring 容器找到对象当做方法入参,自动反射调用该方法。<syntaxhighlight lang="java"> @Service public class OrderService { private UserService userService; @Autowired public OrderService(UserService userService) { this.userService = userService; } public OrderService(UserService userService, UserService userService1) { this.userService = userService; } } </syntaxhighlight>@Autowired 加在构造方法上时,Spring 会在推断构造方法阶段,选择该构造方法来进行实例化, 在反射调用构造方法之前,会先根据构造方法参数类型、参数名从 Spring 容器中找到 Bean 对象当做构造方法入参。
返回至
@Autowired 是如何工作的
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息