底层集成了很多类,例如对微信支付的支持:
@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和微信支付的配置