当前位置:网站首页>一文搞懂什么是@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文件的方式。
边栏推荐
猜你喜欢
随机推荐
最新版图书馆招聘考试常考试题重点事业单位
分布式数据库数据一致性的原理、与技术实现方案
重量级大咖来袭:阿里云生命科学与智能计算峰会精彩内容剧透
pt-online-schema-change工具使用的一次
924. 尽量减少恶意软件的传播 前缀和
word之图表目录中点号位置提升3磅
mongodb的shell脚本
Charles capture shows
solution 模型训练前后显卡占用对比、多卡训练GPU占用分析【一文读懂】
JS 原型原型链
C语言版本和GCC版本
Basic syntax of MySQL DDL and DML and DQL
编程语言有什么
Cesium loads offline maps and offline terrain
MySQL 流程控制
Flutter | 判断 Text 组件是否显示完
Composer require 报错 Installation failed, reverting ./composer.json and ./composer.lock to their ...
异常检测 IsolationForest 返回概率
nvm 卸载详细流程
第六章:存储系统