SpringBoot @Componet注解注入失败如何解决

发布时间:2023-03-06 16:12:49 作者:iii
来源:亿速云 阅读:155

今天小编给大家分享一下SpringBoot @Componet注解注入失败如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

@Componet注解注入失败

问题描述

在springboot程序编写中,明明给Person类加了@Component注解,容器却显示找不到Person类的Bean对象。

网上找了很多种常规解法,发现都无效,后来才意识到,可能是包扫描的问题,由于当时我的主程序是放在一个与主程序同名的文件夹下,根据默认包扫描规则–扫描主程序所在包及其所有子包中的类,那么方在domain包下的Person类自然不会被扫描到,所以@Component虽然标注了,但却不会生效。

SpringBoot @Componet注解注入失败如何解决

解决方法

在主程序上添加Componet注解

@ComponentScan("com.example")

让springboot成功扫描example下的所有包,则水到渠成,问题解决

SpringBoot @component的作用

踩到一个坑,有一个接口,在这个接口的实现类里,需要用到@Autowired注解,一时大意,没有在实现类上加上@Component注解,导致了Spring报错,找不到这个类

一旦使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component

@Component("conversionImpl")
//其实默认的spring中的Bean id 为 conversionImpl(首字母小写)
public class ConversionImpl implements Conversion {
    @Autowired
    private RedisClient redisClient;
}

介绍

开发中难免会遇到这个这个注解@Component

@Controller 控制器(注入服务)

用于标注控制层,相当于struts中的action层

@Service 服务(注入dao)

用于标注服务层,主要用来进行业务的逻辑处理

@Repository(实现dao访问)

用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )

泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

举例说明 

这是在配置文件中的书写格式,如spring mvc中的applicationcontent.xml,

格式:

<bean id="" class=""/>

在spring boot中的话,因采用的是零配置所以要直接在类上加入@component注解就可以了

下面写这个是引入component的扫描组件

<context:component-scan base-package=”com.mmnc.*”>

上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。 

共同点:

被@controller 、@service、@repository 、@component 注解的类,都会把这些类纳入进spring容器中进行管理

以上就是“SpringBoot @Componet注解注入失败如何解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. @Componet @Resource Spring
  2. spring和springboot常用注解总结

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot

上一篇:Vue插槽是什么及怎么使用

下一篇:Golang中map扩容底层如何实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》