package com.java110.event.service.init; import com.java110.utils.util.Assert; import com.java110.event.service.BusinessServiceDataFlowEventPublishing; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.support.PropertiesLoaderUtils; import java.util.Properties; /** * 系统启动时加载信息 * Created by wuxw on 2017/4/14. */ public class SystemStartLoadBusinessConfigure { /** * 默认 事件配置路径classpath:/ */ private final static String DEFAULT_EVENT_PATH = "config/"; /** * 默认 文件名称 .properties */ private final static String DEFAULT_FILE_NAME = "business_listener.properties"; public static void initSystemConfig(String listenerPath){ //加载配置文件,注册订单处理侦听 try { Assert.hasLength(listenerPath,"listenerPath 为空"); Properties properties = load(DEFAULT_EVENT_PATH,DEFAULT_FILE_NAME); registerListener(listenerPath,properties); } catch (Exception ex) { throw new IllegalStateException("system init error", ex); } } /** * 加载文件 * @param location * @param filename * @param */ private static Properties load(String location,String filename) throws Exception{ Properties properties = PropertiesLoaderUtils.loadProperties(new ClassPathResource(location+filename)); return properties; } /** * 注册侦听 * @param properties */ private static void registerListener(String listenerPath,Properties properties) throws Exception{ String[] listeners = properties.getProperty(listenerPath).split("\\,"); for(String listener : listeners){ //这里不能直接反射,这样 IXXXService 无法注入,所以直接从spring 中获取已经注入的 //AppListener appListener = (AppListener)Class.forName(listener).newInstance(); try { // BusinessServiceDataFlowListener businessServiceDataFlowListener = (BusinessServiceDataFlowListener) ApplicationContextFactory.getBean(listener); //将 listener 放入 AppEventPublishing 中方便后期操作 //注册侦听 BusinessServiceDataFlowEventPublishing.addListener(listener); }catch (Exception e){ } } } }