Selaa lähdekoodia

增加BaseInterface接口,项目启动自动执行实现该接口的实现方法

shuzheng 9 vuotta sitten
vanhempi
sitoutus
99159d6ae2

+ 12 - 0
zheng-common/src/main/java/com/zheng/common/base/BaseInterface.java

@@ -0,0 +1,12 @@
+package com.zheng.common.base;
+
+/**
+ * 系统接口
+ * Created by ZhangShuzheng on 2017/6/13.
+ */
+public interface BaseInterface {
+
+	// 系统初始化
+	void init();
+
+}

+ 18 - 3
zheng-common/src/main/java/com/zheng/common/listener/ApplicationContextListener.java

@@ -1,6 +1,7 @@
 package com.zheng.common.listener;
 
 import com.zheng.common.annotation.BaseService;
+import com.zheng.common.base.BaseInterface;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationListener;
@@ -23,17 +24,31 @@ public class ApplicationContextListener implements ApplicationListener<ContextRe
         if(null == contextRefreshedEvent.getApplicationContext().getParent()) {
             _log.debug(">>>>> spring初始化完毕 <<<<<");
             // spring初始化完毕后,通过反射调用所有使用BaseService注解的initMapper方法
-            Map<String, Object> services = contextRefreshedEvent.getApplicationContext().getBeansWithAnnotation(BaseService.class);
-            for(Object service : services.values()) {
+            Map<String, Object> baseServices = contextRefreshedEvent.getApplicationContext().getBeansWithAnnotation(BaseService.class);
+            for(Object service : baseServices.values()) {
                 _log.debug(">>>>> {}.initMapper()", service.getClass().getName());
                 try {
                     Method initMapper = service.getClass().getMethod("initMapper");
                     initMapper.invoke(service);
                 } catch (Exception e) {
-                    _log.error("初始化service的initMapper方法异常", e);
+                    _log.error("初始化BaseService的initMapper方法异常", e);
                     e.printStackTrace();
                 }
             }
+
+            // 系统入口初始化
+            Map<String, BaseInterface> baseInterfaceBeans = contextRefreshedEvent.getApplicationContext().getBeansOfType(BaseInterface.class);
+            for(Object service : baseInterfaceBeans.values()) {
+                _log.debug(">>>>> {}.init()", service.getClass().getName());
+                try {
+                    Method init = service.getClass().getMethod("init");
+                    init.invoke(service);
+                } catch (Exception e) {
+                    _log.error("初始化BaseInterface的init方法异常", e);
+                    e.printStackTrace();
+                }
+            }
+
         }
     }
 

+ 5 - 0
zheng-common/src/main/resources/applicationContext.xml

@@ -14,6 +14,11 @@
 	<!-- 装载service -->
 	<context:component-scan base-package="**.service" />
 
+	<!-- 装载自定义bean -->
+	<context:component-scan base-package="**.*" use-default-filters="false">
+		<context:include-filter type="assignable" expression="com.zheng.common.base.BaseInterface"></context:include-filter>
+	</context:component-scan>
+
 	<!-- 启动时初始化Spring上下文环境工具类 -->
 	<bean id="springContextUtil" class="com.zheng.common.util.SpringContextUtil"></bean>