IntelliJ IDEA 学习笔记 - @Autowired 报红波浪线
发布日期:2021-06-30 14:53:58 浏览次数:2 分类:技术文章

本文共 1135 字,大约阅读时间需要 3 分钟。

IntelliJ IDEA 学习笔记 - @Autowired 报红波浪线

这是我们非常常见的操作

先上要被注入的 Mapper

public interface PoemMapper extends BaseMapper
{
}

情况一: 属性注入

我们使用了属性注入,从 Spring4.0 开始推荐构造注入。所以这条红线是恶性你,让你换构造注入。(当然这也是人家无奈的善意)

在这里插入图片描述

情况二: 构造注入

当我们在 @Autowired 的黄波浪线上按 alt + 回车 选择创建构造函数后:

在这里插入图片描述
注意: Spring4.3 开始估计是被喷狠了,也可能是自己也觉得麻烦了。于是在这构造注入时可以省@Autowired
可是 红色波浪依旧,但此时意义已经不同了。注入时它发现 这个 bean 不存在。原因是我们的 mapper 不是显示定义的。所以它会提醒。

  1. 直接 @Autowired(required = false)压制。
    在这里插入图片描述
  2. 给mapper添加@Component显式声明一下 bean。反正都是模板生成的代码,改下模板也是很方便的。
    在这里插入图片描述

最终效果

Mapper

@Componentpublic interface PoemMapper extends BaseMapper
{
}

Service

@Servicepublic class PoemServiceImpl extends ServiceImpl
implements PoemService {
private final PoemMapper poemMapper; public PoemServiceImpl(PoemMapper poemMapper) {
this.poemMapper = poemMapper; } @Override public Poem myGetById(Long id){
return poemMapper.selectById(id); } }

自欺欺人解决方案

方案1. 换 @Resource (这个我爱用)

@Autowired 换成JDK注解 @Resource它不检查,所以也就不会报红。

方案2. 修改 Configure inspections

右下角的人头图标,点击开Configure inspections 窗口

在这里插入图片描述
autowiringAutowiring for Bean Class取消勾选。 OK
在这里插入图片描述

方案3. 掩耳盗铃

直接把检查级别调低。

在这里插入图片描述

方案4. 自剜双目

在这里插入图片描述

转载地址:https://jerryjin.blog.csdn.net/article/details/114386371 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Mouse without Borders 微软无界鼠标
下一篇:Linux 安装与配置 RabbitMQ

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月27日 04时19分24秒