SpringBoot如何实现自动装配?写出属于自己的starter

前言

提到SpringBoot大家都不陌生,但是在有没有思考过在开发时写好自己的组件后,需要用到@Autowired或者是@Resource来进行注入才能用,有时候还会出现很多问题,比如重复注入、注入失败等等。想想就头大。但是SpringBoot依赖中的组件,为什么就能拿来直接用呢?

1、@SpringBootApplication 注解

这个注解想必用过SpringBoot的人都不陌生,是写在启动类上的注解。其实自动装配也要从这个说起。

 可以看到这个注解是一个复合注解,其实里面核心的注解有三个,分别是@ComponentScan、@SpringBootConfiguration还有@EnableAutoConfiguration 。

2、@ComponentScan注解

这个注解看名字就知道,是包扫描注解。扫描的是启动类所在的包,以及他的子包能被spring扫描到,而启动类所在包外面的类就无法扫描到了

 所以如果我把一个类定义在这里,那么无论写什么注解,spring都无法扫描到并将实例加入Ioc容器中。

 3、@SpringBootConfiguration注解

这个注解的作用就是告诉spring,这个类是一个配置类,同样会被spring所管理,且如果这个类中有@Bean之类的组件,会将实例加载到Ioc容器中。比如这样。

 4、@EnableAutoConfiguration注解

这个注解就是实现自动装配的核心注解了,其底层的大致原理就是:首先通过反射,找到依赖包的resource资源目录,然后找到他下面的META-INF包,在读取里面的spring.factories文件,到这里的操作和文件名都是固定的,必须按照spring的要求写才行。

 然后就是这个配置文件中的这个配置:org.springframework.boot.autoconfigure.EnableAutoConfiguration

这个配置项就是用来指定要实现自动装配的类在哪里,把类的全路径写在=号后面,记得一定要加一个反斜杠,注意!是反斜杠。比如我这么写,spring就会通过反射找到配置的这个类,然后读取类中的实例项,加载到Ioc容器。

例如这样

 

 带有@Bean注解的实例就被自动装配到Ioc容器里面了

截止到这里一个starter的基本原理就说完了,一个最基本的starter也就写完了。

5、starter的使用

那么属于自己的starter写好了之后,怎么用呢?

首先第一步,引入我们写好的starter的依赖

第二步,注入我们设置好的、自动装配的对象

第三步,通过Postman测试工具,访问写好的这个方法

第四步,得到结果,发现Ioc中这个User实例就是我们配置的自动装配进去的张三

 6、总结

现在一个starter就开发完了,希望各位已经清楚了SpringBoot的自动装配原理,开发出属于自己的starter。觉得有用的观众姥爷不妨点个赞支持一下吧~ 0.o

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值