@Autowired和构造方法执行的顺序解析
先看一段代码,下面的代码能运行成功吗?
@Autowiredprivate User user;private String school;public UserAccountServiceImpl(){this.school = user.getSchool();}
答案是不能。因为Java类会先执行构造方法,然后再给注解了@Autowired
的user注入值,所以在执行构造方法的时候,就会报错。
报错信息可能会像下面:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name '...' defined in file [....class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [...]: Constructor threw exception; nested exception is java.lang.NullPointerException
报错信息说:创建Bean时出错,出错原因是实例化bean失败,因为bean时构造方法出错,在构造方法里抛出了空指针异常。
解决办法是,使用构造器注入,如下:
private User user;private String school;@Autowiredpublic UserAccountServiceImpl(User user){this.user = user;this.school = user.getSchool();}
总结:
1、Java变量的初始化顺序为:静态变量或静态语句块–>实例变量或初始化语句块–>构造方法
@Autowired和构造方法执行的顺序解析相关推荐
- 一段代码看出JS的的解析到执行的顺序规则
一段代码看出JS的的解析到执行的顺序规则 代码 function bar(a, b) {b = 3;var b;function b(){}console.log(a); // 打印出:10conso ...
- 步步深入MySQL:架构-查询执行流程-SQL解析顺序
一.前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序 ...
- SQL优化之SQL查询语句的执行顺序解析
SQL语句执行顺序 SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句. SQL语句执行顺序 从这个顺序中我们可以发现,所有的查询语句都是从 FROM 开始执行的.在实际执行过程中,每个步骤都会 ...
- MySQL 架构总览-查询执行流程-SQL 解析顺序
点击关注公众号,回复"1024"获取2TB学习资源! 前言 一直是想知道一条 SQL 语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文 ...
- 继承中的构造方法执行顺序
继承中的构造方法执行顺序 在子父类中,创建子类对象,调用子类的构造方法, 在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造. 为什么要调用父类构造? ...
- java中构造方法和方法全面解析
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...
- 冯诺依曼计算机程序及其执行,第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析...
第4章冯.诺依曼计算机:机器级程序与其执行练习题答案解析 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 第 4 章 冯.诺依曼计算 ...
- Web APi之过滤器执行过程原理解析【二】(十一)
前言 上一节我们详细讲解了过滤器的创建过程以及粗略的介绍了五种过滤器,用此五种过滤器对实现对执行Action方法各个时期的拦截非常重要.这一节我们简单将讲述在Action方法上.控制器上.全局上以及授 ...
- mysql执行计划字段解析_MySQL执行计划解析
前言 在实际数据库项目开发中,由于我们不知道实际查询时数据库里发生了什么,也不知道数据库是如何扫描表.如何使用索引的,因此,我们能感知到的就只有SQL语句的执行时间.尤其在数据规模比较大的场景下,如何 ...
最新文章
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
- symantec、officescan控制台忘记密码如何处理
- 好吧,又是两分钟看完一道投机取巧的算法题
- (0.2.6)Mysql安装——编译安装
- flatten的用法
- php 获取上个月、下个月、本月的日期 当前月份的前后一个月
- jdk1.7 tomcat7 centos 安装
- Spring Security OAuth2.0_实现分布式认证授权_微服务解析令牌并鉴权_Spring Security OAuth2.0认证授权---springcloud工作笔记154
- NodeJs学习笔记002--npm常用命令详解
- 华容道(java版)
- GoldenGate新增表
- BC26:使用MQTT对接阿里云平台
- css实现剪切蒙版,CSS3“蒙版(剪切路径)”: clip-path
- 传智播客mysql 下载_传智播客mysqlppt
- linux终端里面的光标很粗,怎么调细
- 微信小程序页面跳转方法总结
- flutter 华为审核:你的应用存在隐藏最近任务列表中应用名称的问题,不符合华为应用市场审核标准
- WIN10家庭版增加本地安全策略
- IT农民工如何来美国工作(续)
- Metaq原理与应用
热门文章
- idea的maven project消失解决方案
- Android 自定义Switch,仿微信开关键Switch
- mongoose 分页查询
- python 零代码快速开发平台_现在低代码开发平台和零代码平台区别是什么?
- 中南大学王斌计算机学院,中南大学 信息科学与工程学院,长沙 410083
- 嵌入式linux截屏代码,嵌入式linux截屏程序
- Android使用webview控件加载本地html,通过Js与后台Java实现数据的传递
- ssm整合 durid数据源 报错java.sql.SQLException: Access denied for user ‘xxx‘@‘localhost‘
- Java 字节和字符流的读写+Buffered
- 【算法设计与分析】10 差消法化简高阶递推方程