spring boot项目自动加载引入外部bean

前言:
spring boot项目简化了对外部项目的引入,使我们能够狠方便的构建一个web项目,我们通常在开发的过程中会开发出一些公用的模块组件,这样在项目找那个引入后能够直接使用,减少了轮子的重复构造,同时服务引入的模块化操作,能够更多的节省资源和开发效率。那么在这个过程中,我们需要对外部引入的资源bean需要进行注入扫描,这样,我们在关住构建自身的服务同时,也需要对外部的依赖进行管理,同时也可能出现各种各样的问题,那么我们有没有一种方法只需要对外部的组件进行gav引入,就直接可以上手使用了呢,这种问题早已经有了解决方案,本文就简单快速的介绍一下这种解决方案的思路和方法。

1、构建你的公共组件模块

1、在公共组件模块resources目录下,新建META-INF(META-INF 相当于一个信息包,目录中的文件和目录获得 Java 2 平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务manifest.mf文件,在打包时自动生成。)文件夹,其实这种方式是参照Java中的SPI扩展机制来实现,有兴趣的朋友可以去了解下。

扩展下spi,java spi的具体约定为:当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。 基于这样一个约定就能很好的找到服务接口的实现类,而不需要再代码里制定。jdk提供服务实现查找的一个工具类:java.util.ServiceLoader

2、当前文件下下新增spring.factories文件,里面新增如下内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
xxx.yyy.zzz.extension.redis.config.RedisConfig,
说明:如果需要换行,需要在每行的文末添加反斜杠()
以上内容的第一行标识告诉spring需要自动加载当前的配置,第二行,就是你在当前的模块中需要自行加载的bean文件。模块目录结构具体如下图
在这里插入图片描述
小结: 通过以上的操作,我们就可以把自定义的公共组件打包成一个sdk,这样,其他的如何服务只要需要使用我们的组件,只需要引入当前sdk组件依赖的gav就可以行进行使用了。

2、spring boot服务引入依赖gav
<dependency>
    <groupId>com.xxx.yyy</groupId>
    <artifactId>xxx-extension-obs</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

好了,在springboot项目中引入以上模块的gav后,我们就直接可以使用公共模块的bean了,此时在类中只需要通过@Resource @Autowired 等等注解配置就可以直接使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山不在高_有仙则灵

你的奖励是我的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值