在编写代码的时候,使用@Autowired注解是,发现IDE报的一个警告,如下:

Spring Team recommends "Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies.

翻译:
Spring建议,总是在您的bean中使用构造函数建立依赖注入。总是使用断言强制依赖。

那么是为什么呢?

我们可以理一下java的基础点,不考虑父类,初始化的顺序

静态变量或静态语句块–>实例变量或初始化语句块–>构造方法–>@Autowired

ps.静态变量或静态语句块的初始化顺序是自上到下的顺序,被老大问到了...

好的,有了上面的铺垫,我们来看看下面的代码。

@Autowired
private User user;
private School school;public UserServiceImpl(){this.school.id = user.getSchoolId();
}

由于java先执行构造方法,导致

this.school = user.getSchool();

报空指针异常(虽然这个例子正常人都不会这样写...

解决办法就是使用构造器注入了

private User user;
private String schoolId;@Autowired
public UserServiceImpl(User user){this.user = user;this.schoolId = user.getSchoolId();
}

而且若是你是个单例的模式(bean没写@scope,默认为单例,

那么spring还建议你在bean的声明上加final,这个的解析就简单粗暴了。

因为加上final只会在程序启动的时候初始化一次,并且在程序运行的时候不会再改变。

官方的建议例子

    private final EnterpriseDbService service;    @Autowiredpublic EnterpriseDbController(EnterpriseDbService service) {this.service = service;}

转载于:https://www.cnblogs.com/ydymz/p/9225402.html

@Autowired的使用--Spring规范解释,推荐对构造函数进行注释相关推荐

  1. @Autowired的使用:推荐对构造函数进行注释

    最近在使用idea开发时经常看到右侧栏有黄色一堆堆的,好恶心,这些代表代码不符合规范,可能会出现问题,为了代码整洁和代码规范,则优化一把,重点记录下autowired注解优化. @autowired含 ...

  2. pg注释某一段语句不执行_@Autowired的使用:推荐对构造函数进行注释

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:阿丙 www.cnblogs.com/acm-bingzi 在编写代码的时候,使用@ ...

  3. @autowired失败_@Autowired的使用:推荐对构造函数进行注释

    在编写代码的时候,使用@Autowired注解是,发现IDE报的一个警告,如下: Spring Team recommends "Always use constructor based d ...

  4. Spring注解解释

    Spring注解 @Service 注解在serviceImpl类上,表示这是一个业务层bean @Controller 注解在controller类上,表示这是一个控制层bean @Reposito ...

  5. Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 事务管理在系统开发中是不可缺少的一部分,Spring提供了 ...

  6. Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准

    Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准 1. 界面gui方面的前后端分离重大意义1 2. 业务逻辑也适当的迁移js化1 3. 常用分离方法2 3.1. 页面 ...

  7. 跨境电商Etsy如何使用交互行为类型进行可解释推荐

    " 本文介绍了跨境电商Etsy如何利用用户历史交互行为的类型(如浏览,喜欢,收藏,加购,购买等)来完善物品的embedding表示,并进行可解释推荐.在离线和在线实验中均验证了引入交互类型信 ...

  8. Spring Boot(一):概述(5)——Spring Boot项目推荐工程结构

    Spring Boot项目推荐工程结构:

  9. 可解释推荐系统研究综述

    可解释推荐系统研究综述 文献来源 简介 解释的各种类型 基于用户和基于项目的解释 基于内容的解释 文本解释 可视化解释 社交解释 混合解释 可解释推荐模型 推荐模型概述 基于矩阵/张量分解的可解释推荐 ...

  10. 技术胖前端代码规范秘籍推荐

    技术胖前端代码规范秘籍推荐 6个文档 ,一本书籍 ,2个工具 京东凹凸实验室前端代码规范 腾讯前端代码规范 百度前端代码规范 JavaScript Standard Style :是一个个人代码规范 ...

最新文章

  1. 【C++】LINK类型错误分析记录
  2. 微信小程序自定义组件之Picker组件
  3. 2014年云计算服务将取代PC电脑
  4. Android进阶:十三、自定义类加载器加载加密类文件
  5. Python量化(八)下影线选股法
  6. 【杂谈】AI工业界都有哪些值得参加的比赛?
  7. C# HTTP请求后对gzip页面实现解压缩
  8. 操作系统动态库调用过程
  9. 计算机控制z反变换公式,第三章 计算机控制系统的数学描述(修正Z变换).ppt
  10. 给程序猿简历的一些建议
  11. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第三部分
  12. [MYSQL]如何并发查询并更新
  13. core部署iis的 调试net_ASP.NET Core环境变量和启动设置的配置教程
  14. WinPE 安装系统
  15. 「 LaTex 」 写论文,如何插入参考文献讲解
  16. Android 使用三种方式缓存加载 倒影图片
  17. ArcGIS中的坐标系
  18. java解决异常_聊聊Java中的异常及处理
  19. 欧美零售商的全渠道实践
  20. [CocosCreator]封装对象池

热门文章

  1. python二分查找例题_Python查找数组中数值和下标相等的元素示例【二分查找】
  2. oracle设置保存时间为12或是24小时格式
  3. php imagick下载,PHP安装imagemagick扩展imagick
  4. java队列 notify_java使用线程做一个消息队列,wait,notify
  5. 人口会一直增长下去吗_想要一直美下去?护肤雷区你避开了吗?
  6. Hadoop CentOS 7 安装配置
  7. Android 显式意图(Intent) 与 隐式意图
  8. arduino 读取串口信息hex_进阶教程1:Arduino串口通信与电脑控制LED
  9. layer icon对应图标
  10. python3 下载网络图片