0


一文搞懂什么是@Component和@Bean注解以及如何使用

一、前言

@Component

@Bean

的作用都是注册一个bean到IOC容器中。
二、@Component和@Bean两者对比
1、

@Component

作用于类,而

@Bean

作用于方法(见源码)
在这里插入图片描述
2、

@Component

是通过类路径扫描的方式自动装配bean到IOC容器中的,而

@Bean

是将方法返回值作为bean自动装配到IOC容器中的
3、

@Bean

的功能比

@Component

的功能更强大,当我们需要引入外部类(即第三方库中的类),并将它注入到IOC容器中时,

@Component

注解是做不到的,但

@Bean

可以做到。这也是我认为的两者最大的区别!(当然在引入第三方库中的类时,

@Import

注解也可以做到,这里就不再赘述了)点我查看@Import注解详解

三、@Component的使用
1、使用方法:直接加在类上即可。加在类上后,项目启动容器初始化时,就会通过扫描类路径把这个bean注入到IOC容器中了。

在这里插入图片描述

2、另外我们常用的

@Controller、@Service、@Reporsitory

其实他们的本质也是实现了

@Component

在这里插入图片描述
那么使用

@Controller、@Service、@Reporsitory

的原因其实是为了方便区分MVC三层架构,它们三个分别代表controller层、service和dao层,一般当一个类都不属于这三层其中一层的时候才采用@Component注解。
3、上面已经说到,是通过扫描加了

@Component

注解的类所在的包来将其加入IOC容器的,在很多SSM(Spring+SpringMVC+Mybatis)的项目中,Spring是通过xml来配置的,通过在xml配置中加入

<context:component-scan base-package=””>

来扫描该类所在的包;而在SpringBoot中则是通过

@ComponentScan

注解来扫描包的,只要加了

@Component

注解的类所在的包,存在于加了

@ComponentScan

注解的类所在包及其子包路径下,就可以被扫描到,而

@ComponentScan

则是通过启动类上的

@SpringBootApplication

注解来实现的
在这里插入图片描述

四、@Bean的使用

@Bean

通常被用在

@Configuration

注解的类中的方法上。这其实就是替换xml配置文件的另一种写法:配置类 点我查看@Configuration详解

//配置类@ConfigurationpublicclassMyConfig{@BeanpublicUserServiceuserService(){returnnewUserServiceImpl();}}
//xml配置文件<beans><bean id="userService"class="com.gzc.UserServiceImpl"></bean></beans>

这两种配置方式效果是一致的,SpringBoot中一般用配置类方式,SSM中一般用配置xml文件的方式。

标签: spring java

本文转载自: https://blog.csdn.net/m0_51358164/article/details/126120731
版权归原作者 努力努力再努力c. 所有, 如有侵权,请联系我们删除。

“一文搞懂什么是@Component和@Bean注解以及如何使用”的评论:

还没有评论