如果你提供了一个Jar包供第三方用户使用,那么你这个jar包中的Bean,能被第三方加载么?
最近开发中遇到问题是这样的,自己开发的Jar包,因为包路径和项目路径不一样,比如Jar包主要代码包为 com.ec 而项目主要路径为 com.auth,在项目中直接
@Autowired,加载不到类。
@Autowired
private RequestServiceUtil requestServiceUtil;
研究了一下,需要在自己的 Jar 包进行一下配置,即可实现注入。
将配置放在指定的文件中即可,使用者会自动加载,从而避免的代码的侵入:
- 在资源目录下新建目录 META-INF
- 在 META-INF 目录下新建文件 spring.factories
- 在文件中添加
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.ec.GDSRequestServiceUtilImpl,com.ec.StarterAutoConfig
- StarterAutoConfig 类内容如下:
@Import({SpringUtil.class})
//@ConditionalOnMissingBean({SpringUtil.class})
@EnableConfigurationProperties({GDSConfig.class, ApplicationSltConfig.class})
public class StarterAutoConfig {
}
- pom 添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
打包上传到 maven 私服,即可。
2019.11.14 18:36
上海 虹桥V1