@Data
@ConfigurationProperties(prefix = "User")
public class UserProperties implements Serializable {
private Map<String,Map<String,Map<String,Object>>> otherDataSourcesMap;
/** 是否开启 */
boolean enabled = true;
/** 是否打印操作日志 */
private Boolean log = false;
}
请注意:这里的@ConfigurationProperties 注解里面的 prefix 参数指的是在配置文件中你自己定义的标识符
public class UserBeanInject {
/**
* 注入配置Bean
*
* @param config 配置对象
*/
@Autowired(required = false)
public void setConfig(UserConfig config){
UserSpi.setConfig(config);
}
}
当然,还有重要的一步,那就是在resources文件夹下创建一个Spring自动装配的约定文件,使得我们这几个java配置文件能够生效
spring.factories
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
自己定义的包路径.configuration.UserConfiguration, \
自己定义的包路径.configuration.UserBeanInject
然后,我们要暴露这个接口
UserSpi.Java
@Slf4j
public class UserSpi{
public volatile static UserConfig config;
public static void setConfig(UserConfig config){
UserSpi.config = config;
if (config.getLog()){
log.info("数据库中转服务API组件 ——> 打印配置信息\n", JSONUtil.toJsonStr(UserSpi.config));
}
}
// =================== 获取Api 相关 ===================
public static IUserService api = new UserServiceImpl();
}
这样基本上完成jar自动装配外部配置文件的配置,业务逻辑什么的看个人习惯自己去编写