Springboot注解--IoC常用注解(Component)

Springboot注解


一、IoC 理解

IoC(控制反转Inversion of controller),主要的作用就是降低代码之间的耦合程度。
IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
https://blog.csdn.net/zhangyuxuan2/article/details/83007830

二、IoC和Spring

spring是一个容器框架,用来装java bean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

Spring IoC(ApplicationContext)容器负责进行扫描Bean,进行Bean的初始化、配置和依赖管理。
(注:Spring是什么-https://zhuanlan.zhihu.com/p/46638942)

三、Component注解

@Component 作用在类上,开发中我们可以使用注解 取代 xml配置文件。相当于在xml中配置了一个bean;默认值id为当前类的类名,首字母小写。
为需要生成对象的类打上@Component的注解标记,这些类会被放到IoC容器中。Component注解有一个Value属性,指定这个类用于被检索的名字,如果不指定,默认是把类名的首字母小写其余不变作为检索名。在这些类的属性上打上@Value注解可以为属性赋值。

@Component属于Stereotype annotations(构造型注解),位于控制器、服务、仓储的顶级,它是任何Spring托管组件的通用构造型注解,而其他构造型(Controller,Service,Repository)只是@Component类的特例,如果我们查看它们的源代码,就会看到它们本身带有@Component注解,区分出这三个注解是为了帮助开发人员对特定类进行分类。
●控制器Controller:在MVC模式中的作用是控制路由请求;
●服务Service:是放置所有业务逻辑的地方;
●仓储Repository:是实现各种持久性存储的数据访问层的地方;

使用注解配置和类路径扫描时,被@Component注解标注的类会被Spring扫描并注册为Bean
@Component使用在不确定哪一个层的时候使用,可以作用在任何层次,把普通pojo实例化到spring容器,不推荐使用@Component注解,而应该使用它的扩展,如@Service、@Repository、@Controller

三、@Component和@Bean

@Component是一个通用注解,可以应用于应用程序的任何类,以使其成为Spring托管组件(简单来说,是任何Spring托管组件的通用构造型)。当通过spring的注解@ComponentScan功能扫描类路径时,它将识别用@Component注释注释的类(在给定的包内),并创建此类的Bean,并将其注册到ApplicationContext中,注解@Component是一个类级别的注解,其目的是使该类成为Spring托管组件和用于类路径扫描功能的可自动检测到的bean。

而注解@Bean用于在方法返回的Spring IOC容器中显式声明和注册一个Bean(作为配置Bean),由于@Bean是方法级别的注解,所以不能与类和对象声明一起使用,它在用@Configuration注解的类中使用,简单来说,注解@Bean用于将方法返回的bean注册为IOC Container中的spring配置bean,@Bean注解指示方法产生应由Spring容器管理的bean,要声明一个bean,只需使用@Bean对方法进行注解, 当Spring检测到该注解方法时,它将执行该方法并将返回值注册为ApplicationContext中的Bean, 默认情况下,bean名称与方法名称相同。

参考文章:
1.https://www.cnblogs.com/CreateMyself/p/12150987.html
2.https://blog.csdn.net/xiayto/article/details/101981505
3.https://blog.csdn.net/qq_33552451/article/details/85301806

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值