底层集成了很多类,例如对微信支付的支持:
@Configuration
@Component
public class WeChartPayConfig implements ApplicationRunner {
@Value("${qlm.wechart.appid}")
public String appId;
@Value("${qlm.wechart.appSecret}")
public String appSecret;
@Value("${qlm.wechart.merchartid}")
public String merchartid;
@Value("${qlm.wechart.merchartno}")
public String merchartno;
@Value("${qlm.wechart.keyFile}")
public String keyFile;
@Value("${qlm.wechart.payKey3}")
private String payKey3;
@Value("${qlm.wechart.miniPayNotify}")
public String miniPayNotify;
public void run(ApplicationArguments args) throws Exception {
WeXinPayUtilV3.init(appId, merchartid, payKey3, miniPayNotify);
}
}
这样的写法,有个副作用就是配置文件里必须包含qlm.wechart.appid的定义,如果没有,服务是无法启动的。类似的情况很多。
解决这个问题的关键是在启动类里排除对不需要类的支持:
@ComponentScan(value={"org.qlm","com.zDHR"},excludeFilters=@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE,classes={MongoMappingConfig.class,MongodbUtil.class,WeChartPayConfig.class}))
排除了对mongdb和微信支付的配置