SpringBoot 打成打成jar包供第三方引用自动装配方案实现包供第三方引用自动装配方案实现
SpringBoot 打成打成jar包供第三方引用自动装配方案实现包供第三方引用自动装配方案实现
每天多学一点点~
话不多说,这就开始吧…
文章目录文章目录SpringBoot 打成jar包供第三方引用自动装配方案实现1.前言2.使用者手动配置 basePackages3.使用者通过注解方式引入4.利
用SPI机制注入5.打包测试6.结语
1.前言前言
看了源码之后,总有种蠢蠢欲动的感觉,想着以后啥时候牛逼了,自己也可以用springboot写个第三方组件,让别人引入jar包就行。虽
然知道目前水平有限,先试试普通的jar包如何与spring自动装配吧~
环境 jdk1.8 springboot 2.1.12.RELEASE
2.使用者手动配置使用者手动配置 basePackages
这种个人觉比较low,不友好,使用者需要在类上加@ComponentScan,而对于开发者很简单,
不需要对项目进行任何其余配置。
@Configuration
@ComponentScan(basePackages = {"com.zjq.jartest.**"})
public class TestConfig{
}
配置方式: 在SpringBoot启动类或能被Spring发现的 Configuration 类上增加 @ComponentScan(basePackages = {“com.zjq.jartest.**”})
通过此方式配置后,Spring会在启动时扫描 com.zjq.jartest 这个包,我们的组件自然而然也会被注册为Spring Bean
3.使用者通过注解方式引入使用者通过注解方式引入
这种方式比较像nacos的@EnableDiscoveryClient,Feign的@EnableFeignClients 之类。原谅我比较菜,用jedis举个例子。
MyRedisTemplateAnno 主要配置类,相当于我们组件的入口
扫描到 com.zjq.jartest.service2 这个包下需要装配的类
@Configuration
@ComponentScan(value = "com.zjq.jartest.service2")
public class MyRedisTemplateAnno {
private JedisPool jedisPool;
@PostConstruct
public void init() {
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
poolConfig.setMaxTotal(500);
jedisPool = new JedisPool(poolConfig, "127.0.0.1",
6379, 5000, "123456", 1);
}
public void insert(String k, String v) {
Jedis jedis = jedisPool.getResource();