java - @Autowired应该怎么用?

 201153蜡笔小新 发布于 2022-11-03 13:41

好像一般书上都是这么用的

@Autowired
private UserRepository userRepository;

我写的时候运行是没问题的,但是IntelliJ会标红,说找不到bean什么的

看Spring.io的源码的时候发现人家是这么写的

private UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

写在构造方法上的,新手表示不解,应该怎么写,求指教

6 个回答
  • 楼上正解!!!

    2022-11-05 19:43 回答
  • 1.属性上加这个,就是IOC的应用了,spring通过配置文件,来帮你装配bean对象进来。
    2.@Autowired加在方法上的时候,Spring会先实例化所有Bean,然后根据配置进行扫描,当检测到@Autowired后进行注入,注入时调用这个方法。

    2022-11-05 19:45 回答
  • 你的写法是没错的,找不到bean的话,可能是配置的问题,在applicationContext.xml里需要有下面的配置语句:

    <context:component-scan base-package="需要自动扫描的包" />
    2022-11-05 19:49 回答
  • Spring注入的方式有多种,可以写在field上,可以写在setter方法上,可以写在constructor上。
    你使用的方式是写在了field上,你看到的是写在了constructor上

    2022-11-05 19:53 回答
  • Spring bean通过@Autowired注入,spring auto scan配置,在编辑情况下,无法找不到对应的bean,于是提示找不到对应bean的错误。

    但build项目是能正常运行的。

    可在File -- Settings -- Inspections。在Spring Model -- Autowring for Bean Class 中,

    将Severity的级别由之前的error改成warning或者直接取消提醒。

    2022-11-05 19:56 回答
  • 如果是mybatisdubbo这类框架,由于其bean提供方式有点不同,所以IDEA的静态检查并不能感知到bean被注入了,所以显示红色波浪线,关掉这个提示就好了。

    2022-11-05 19:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有