使用@Autowired注解有错误提示的解决

目录
  • 使用@Autowired注解有错误提示
    • 处理方式
    • @Resource注解与@Autowired注解的异同点
  • Spring的@Autowired注解报错改为警告

使用@Autowired注解有错误提示

使用Spring boot +mybatis框架时,在service实现类中使用Mapper类,给Mapper类添加@Autowired注解时发现

有错误提示:could not autowire,no beans of "XXX" type found

但程序的编译和运行都正常。

处理方式

方案一:@Autowired(required = false) 设置required 属性值为 false,错误消失

方案二:用@Resource注解替换@Autowired注解,错误消失

@Resource注解与@Autowired注解的异同点

这两个注解都是用作bean的注入时使用,都是为一个对象变量省去写get,set方法,自动为这个对象注入实例化对象(即注入依赖)注入的方式还是有所区别的 :

  • @Autowired是基于spring的注解org.springframework.beans.factory.annotation.Autowired,它默认是按类型进行的装配的,如果想要它按名字进行装配则需在@autowired下面添加@qualifier("name")`注解,都无法找到唯一的一个实现类的时候报错。@Autowired注解默认情况下必须要求依赖对象必须存在,如果要允许null值,则应该设置它的required属性为false,
  • @Resource是基于j2ee的注解(可以减少了与spring的耦合),(JDK1.6以上支持)默认是按名字进行注解,若不指定装配bean的名字,当注解写在字段上时,默认取字段名,按照名称查找通过set方法进行装配,倘若有多个子类,则会报错。需要注意的是name属性一旦指定,就只会按照名称进行装配

Spring的@Autowired注解报错改为警告

使用@Autowired注解在idea里会有error提示,不影响程序正常运行,据我观察身边同事们大多也是选择无视这个error,但一条红线放在这看着确实难受。后来得知可以把这里的error改为warning,并且不会干扰其他代码。

打开idea的settings,找到如下图所示位置,修改自动注入时的error错误为warning警告。

成功修改后就不会有烦人的红色下划线了(变成了黄色的),不建议随意修改这些检测,除非你确实很了解它。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • spring中使用@Autowired注解无法注入的情况及解决

    目录 spring @Autowired注解无法注入 问题简述 原因:(此处只说第二种) 解决方案 @Autowired注解注入失败,提示could not autowire spring @Autowired注解无法注入 问题简述 在使用spring框架的过程中,常会遇到这种两情况: 1.在扫描的包以外使用需要使用mapper 2.同目录下两个controller或者两个service,在使用@Autowired注解注入mapper或者service时,其中一个可以注入,另一个却为空. 原因:

  • Spring使用@Autowired注解实现自动装配方式

    目录 Spring支持注解配置 引入注解依赖 启用注解 使用@Autowired注解实现自动装配 1.IOC容器配置 2.实体类使用@Autowired注解注入属性 3.测试结果 @Autowired注解的使用和注入规则 1.使用在变量域上面 2.@Autowired注解使用在构造器上面 Spring支持注解配置 引入注解依赖 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="ht

  • @Autowired注解在抽象类中失效的原因及解决

    @Autowired注解在抽象类中失效 最近在工作中遇到这个问题,在抽象类中使用Autowired这个注解,注入mybatis的dao时,总是出现空指针异常,通过日志的打印,发现是这个dao注入失败为空.然后通过new出spring上下文对象,再去调用getBean()方法,获取到这个注入的dao,这样是可行的,但是总是觉得这不是最佳实践,一定有比这个更加优雅的方式能解决这个问题. 我们来还原一下这个问题: 1.定义一个抽象类 声明为spring组件,在其中自动装配另一个bean: @Compo

  • Spring为什么不推荐使用@Autowired注解详析

    目录 引言 Spring的三种注入方式 属性(filed)注入 构造器注入 set方法注入 属性注入可能出现的问题 问题一 问题二 问题三 spring建议 使用@Resource代替@Autowired 使用@RequiredArgsConstructor构造器方式注入 总结 引言 使用IDEA开发时,同组小伙伴都喜欢用@Autowired注入,代码一片warning,看着很不舒服,@Autowired作为Spring的亲儿子,为啥在IDEA中提示了一个警告:Field injection i

  • Spring使用@Autowired注解静态实例对象方式

    目录 Spring @Autowired注解静态实例对象 问题 原因 解决方案 方式一 方式二 方式三 方式四 总结 @Autowired注解和静态方法 一.业务场景 二.原理剖析 三.解决方法 1.将@Autowire加到构造方法上 2.用@PostConstruct注解 Spring @Autowired注解静态实例对象 问题 最近项目小组在重新规划工程的业务缓存,其中涉及到部分代码重构,过程中发现有些工具类中的静态方法需要依赖别的对象实例(该实例已配置在xml成Spring bean,非静

  • 理解Java注解及Spring的@Autowired是如何实现的

    首先我们可以自己写一个注解: @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AnnoSample { String value(); } 注解使用 @interface来标识.这个注解定义了一个属性value,只能作用于方法上,生命周期是运行时. @Target用于指定可以放置注解的位置,这里指定的METHOD说明该注解只能放置到方法上面,还可以指定TYPE(类.接口.枚举类),

  • Spring中@Autowired和@Qualifier注解的3个知识点小结

    目录 @Autowired和@Qualifier注解的3个知识点 1.@Autowired自动注入 2.如果想直接使用byName的注入方式 3.如果没有指定Spring创建的bean的名称 @Autowired @Qualifier @Resource的区别 1.@Autowired 2.@Qualifier 3.@Resource @Autowired和@Qualifier注解的3个知识点 1.@Autowired自动注入 默认是先以byType的方式,如果有多个类型相匹配,那么使用byNa

  • 使用@Autowired注解有错误提示的解决

    目录 使用@Autowired注解有错误提示 处理方式 @Resource注解与@Autowired注解的异同点 Spring的@Autowired注解报错改为警告 使用@Autowired注解有错误提示 使用Spring boot +mybatis框架时,在service实现类中使用Mapper类,给Mapper类添加@Autowired注解时发现 有错误提示:could not autowire,no beans of "XXX" type found 但程序的编译和运行都正常.

  • Android studio 4.1打包失败和插件错误提示的解决

    一.Android studio 升级4.1,Android Gradle插件从4.0.2升级到4.1.0后打包失败,回退到4.0.2后打包正常. 错误信息: •What went wrong:  Execution failed for task ':app:processDebugManifest'. Could not get unknown property 'manifestOutputDirectory' for task ':app:processDebugManifest' of

  • PHP常见的6个错误提示及解决方法

    在php开发过程中,由于不知道向谁求助而心慌意乱地判断以为自己不适合学php.其实错误在每个人学习过程中都会碰到的,千万不要妄自菲薄.很多错误在报错的代码提示中已经告诉我们了,仔细看,不会就百度.现总结一些常见的php错误,以共享php新人. Php常见错误提示 一.Fatal error: Call to undefined function-- 函数不存在,可能的原因: 1.系统不存在这个函数且你也没自定义 2.有人会问,我在别的机器上就不报错.那是因为环境不同,这个函数在本机没开,怎么开?

  • SQL Server 2005 安装遇到的错误提示和解决方法

    安装SQL Server 2005弄了好久,终于可以了...期间问题重重,想拿出来和大家一同分享的. 第一种错误显示: 无法在com+目录中安装和配置程序集 错误:-2146233087 无法在com+目录中安装和配置程序集c:\program files\Microsoft SQL Server\90\DTS\tasks\microsoft.sqlserver.MSMQTASK.DLL.  错误:-2146233087 sql server 安装时"无法在COM+目录中安装和配置程序"

  • IIS “另一个程序正在使用此文件,进程无法访问。”错误提示的解决办法

    如何查看哪个程序打开了tcp 80端口呢?使用"开放端口查看软件Active ports"就可以一目了然了.我查看了一下我的机器情况,如图所示: 从图上看出原来Skype打开了Tcp 80端口,原来是这个家伙惹的祸,将其关闭.再重启IIS,一切正常. 如果在IIS启动之后再开Skype,Skype仍能正常使用.说明Skype发现tcp 80端口已打开就不再使用此端口了.看来启动IIS还得有个顺序,那就是先启动IIS再启动Skype. 补充:其实Skype可以通过设置不让其打开80端口的

  • VC6.0常见编译错误提示附解决方法

    (1)error C2001: newline in constant 编号:C2001直译:在常量中出现了换行.错误分析: 1.①字符串常量.字符常量中是否有换行.2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号.3.③在这语句中,某个字符创常量中是否出现了双引号字符""",但是没有使用转义符"\"".4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号.5.⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号. (2)er

  • Idea 解决 Could not autowire. No beans of 'xxxx' type found 的错误提示

    IntelliJ Idea 解决 Could not autowire. No beans of 'xxxx' type found 的错误提示 哈,在使用 @Autowired 时,今天又遇一坑,这俩波浪线是干啥子嘛: 然鹅,试了一下,控制台也不报错,可以正常运行, 数据也有: 于是,又再百度上找答案.. 问题分析 在 Idea 的 spring 工程里,经常会遇到 Could not autowire. No beans of 'xxxx' type found 的错误提示.但程序的编译和运

  • 使用@Autowired注解引入server服务层方法时报错的解决

    目录 @Autowired注解引入server服务层方法时报错 网上搜的方法:还行 JavaBean属性 方法 关于@Autowired 注解时发生的错误 1.解决 2.解决 @Autowired注解引入server服务层方法时报错 contentTypeService in com.example.demo001.controller.ContentTypeController required a bean of type 'com.example.demo001.service.Conte

  • idea中@Autowired注解下变量报红的解决

    目录 idea中@Autowired注解下变量报红 问题 解决方法 注解@Autowired--警告(亲测可用) 变量(filed)注入 构造器注入 set方法注入 小结下 idea中@Autowired注解下变量报红 问题 idea中@Autowired注解下变量报红 这个不是错误,只是一个警告而已,其实不解决也是可以启动项目的 解决方法 1.修改设置 file–>settings–>Inspections–>spring Core–>Code–>Autowiring fo

随机推荐