当前位置:网站首页>一文搞懂什么是@Component和@Bean注解以及如何使用
一文搞懂什么是@Component和@Bean注解以及如何使用
2022-08-03 06:12:00 【努力努力再努力c.】
一、前言@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详解
//配置类
@Configuration
public class MyConfig {
@Bean
public UserService userService() {
return new UserServiceImpl();
}
}
//xml配置文件
<beans>
<bean id="userService" class="com.gzc.UserServiceImpl">
</bean>
</beans>
这两种配置方式效果是一致的,SpringBoot中一般用配置类方式,SSM中一般用配置xml文件的方式。
边栏推荐
- 多线程案例
- 开放域OOD主要数据集、评价指标汇总
- nacos-2.0.3启动报错出现no datasource set的坑
- FiBiNet torch reproduction
- UniApp scroll-view 事件不生效(@scroll、@scrolltolower、@scrolltoupper ...)
- pyspark @udf 循环使用变量问题
- 异常检测 IsolationForest 返回概率
- ISIJ 2022收官,中国初中生再展风采
- 【Shell】3万字图文讲解带你快速掌握shell脚本编程
- Detailed explanation of AutoInt network and pytorch reproduction
猜你喜欢

MySQL的DATE_FORMAT()函数将Date转为字符串

torch.nn.modules.activation.ReLU is not a Module subclass

el-table获取读取数据表中某一行的数据属性

empty() received an invalid combination of arguments - got (tuple, dtype=NoneType, device=NoneType),

现货黄金分析的主要流派

Example of embedding code for continuous features

keepalived安装部署
Scala 基础 (三):运算符和流程控制

Multi-Head-Attention原理及代码实现

Nacos单机模式的安装与启动
随机推荐
人脸检测和识别--face recognition包
关于Attention的超详细讲解
Example of embedding code for continuous features
(十五)51单片机——呼吸灯与直流电机调速(PWM)
mysql慢查询优化
Nacos下载与安装
spark中的bykey
MYSQL存储过程注释详解
Embedding的两种实现方式torch代码
pyspark---对suuid区间编码(基于曝光数、点击数)
MySQL的10种常用数据类型
CCF NOI 2022笔试题库
我国有关信息方面的法律法规
PHP 获取服务器信息
微信小程序 - 监听 TabBar 切换点击事件
【卫朋】硬件创业:营销与开发同行
AlexNet网络详解及复现
Week5
C语言入门实战(14):选择排序
深入理解IO流(第一篇)