• 一文搞懂什么是@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配置中加入来扫描该类所在的包;而在SpringBoot中则是通过@ComponentScan注解来扫描包的,只要加了@Component注解的类所在的包,存在于加了@ComponentScan注解的类所在包及其子包路径下,就可以被扫描到,而@ComponentScan则是通过启动类上的@SpringBootApplication注解来实现的
    在这里插入图片描述

    四、@Bean的使用
    @Bean通常被用在@Configuration注解的类中的方法上。这其实就是替换xml配置文件的另一种写法:配置类 点我查看@Configuration详解

    //配置类
    @Configuration
    public class MyConfig {
        @Bean
        public UserService userService() {
            return new UserServiceImpl();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    //xml配置文件
    <beans>
    	<bean id="userService" class="com.gzc.UserServiceImpl">
    	</bean>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

  • 相关阅读:
    document.body.clientHeight获取可视区域高度为0问题解决
    ElasticSearch(3)
    【Bug】Python利用matplotlib绘图无法显示中文解决办法
    SpringBoot项目创建及运行
    如何设计高性能架构
    【无标题】
    Eureka和Zookeeper的区别?
    CMake 与 VSCode 搭建 ARM 构建环境
    从零开始配置vim(19)——终端配置
    Mac book pro 睡眠唤醒之后,外接显示器再也无法点亮,只能重启,怎么解决?
  • 原文地址:https://blog.csdn.net/m0_51358164/article/details/126120731