From bc2ea967a09f6942eccd0b84d8280567bc488e3b Mon Sep 17 00:00:00 2001
From: yuye <631941527@qq.com>
Date: Sat, 17 Aug 2019 14:31:44 +0800
Subject: [PATCH] add mars-timer
---
.../java/com/mars/aop/proxy/CglibProxy.java | 6 +-
mars-core/mars-core.iml | 16 ++-
.../java/com/mars/core/after/StartAfter.java | 11 ++
.../com/mars/core/annotation/MarsTimer.java | 2 +-
.../com/mars/core/constant/MarsConstant.java | 9 ++
.../java/com/mars/core/load/LoadHelper.java | 118 ++++++++++++++++++
.../java/com/mars/core/load/WriteFields.java | 5 +-
.../com/mars/core/model/MarsTimerModel.java | 76 +++++++++++
.../com/mars/ioc/factory/BeanFactory.java | 9 +-
.../java/com/mars/ioc/load/LoadEasyBean.java | 29 ++---
.../com/mars/mvc/load/LoadController.java | 18 +--
.../com/mars/netty/server/MarsServer.java | 10 ++
mars-start/mars-start-base/pom.xml | 5 +
.../com/mars/start/base/BaseStartMars.java | 24 +++-
.../src/main/resources/demo/mars.yml | 2 +-
.../main/java/com/mars/start/StartMars.java | 4 +-
.../main/java/com/mars/start/StartMars.java | 4 +-
.../main/java/com/mars/start/StartMars.java | 4 +-
mars-timer/pom.xml | 26 ++++
.../mars/timer/execute/ExecuteMarsTimer.java | 57 +++++++++
.../com/mars/timer/load/LoadMarsTimer.java | 69 ++++++++++
pom.xml | 16 ++-
22 files changed, 455 insertions(+), 65 deletions(-)
create mode 100644 mars-core/src/main/java/com/mars/core/load/LoadHelper.java
create mode 100644 mars-core/src/main/java/com/mars/core/model/MarsTimerModel.java
create mode 100644 mars-timer/pom.xml
create mode 100644 mars-timer/src/main/java/com/mars/timer/execute/ExecuteMarsTimer.java
create mode 100644 mars-timer/src/main/java/com/mars/timer/load/LoadMarsTimer.java
diff --git a/mars-aop/src/main/java/com/mars/aop/proxy/CglibProxy.java b/mars-aop/src/main/java/com/mars/aop/proxy/CglibProxy.java
index 3d6acce..adec666 100644
--- a/mars-aop/src/main/java/com/mars/aop/proxy/CglibProxy.java
+++ b/mars-aop/src/main/java/com/mars/aop/proxy/CglibProxy.java
@@ -44,8 +44,12 @@ public class CglibProxy implements MethodInterceptor {
@Override
public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
Object obj = null;
+ Class c = null;
+
AopModel aopModel = list.get(method.getName());
- Class c = aopModel.getCls();
+ if(aopModel != null){
+ c = aopModel.getCls();
+ }
if(c != null){
obj = c.getDeclaredConstructor().newInstance();
if(c.getName().equals(MarsConstant.TRACTION_CLASS)){
diff --git a/mars-core/mars-core.iml b/mars-core/mars-core.iml
index d3b77a5..e8eeba7 100644
--- a/mars-core/mars-core.iml
+++ b/mars-core/mars-core.iml
@@ -5,6 +5,7 @@
+
@@ -14,8 +15,21 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mars-core/src/main/java/com/mars/core/after/StartAfter.java b/mars-core/src/main/java/com/mars/core/after/StartAfter.java
index 461dddd..61fe693 100644
--- a/mars-core/src/main/java/com/mars/core/after/StartAfter.java
+++ b/mars-core/src/main/java/com/mars/core/after/StartAfter.java
@@ -2,9 +2,13 @@ package com.mars.core.after;
import com.mars.core.constant.MarsConstant;
import com.mars.core.constant.MarsSpace;
+import com.mars.core.load.LoadHelper;
+import com.mars.core.load.WriteFields;
+import com.mars.core.model.MarsBeanModel;
import java.lang.reflect.Method;
import java.util.List;
+import java.util.Map;
/**
* 框架启动后立刻执行
@@ -24,8 +28,15 @@ public class StartAfter {
if(afterObjects != null) {
List easyLoads = (List)afterObjects;
+ Map beanModelMap = LoadHelper.getBeanObjectMap();
+
for(Class cls : easyLoads){
Object obj = cls.getDeclaredConstructor().newInstance();
+
+ /* 注入属性 */
+ WriteFields.writeFields(cls,obj,beanModelMap);
+
+ /* 执行after方法 */
Method method2 = cls.getDeclaredMethod("after");
method2.invoke(obj);
}
diff --git a/mars-core/src/main/java/com/mars/core/annotation/MarsTimer.java b/mars-core/src/main/java/com/mars/core/annotation/MarsTimer.java
index 945c7d8..4953416 100644
--- a/mars-core/src/main/java/com/mars/core/annotation/MarsTimer.java
+++ b/mars-core/src/main/java/com/mars/core/annotation/MarsTimer.java
@@ -11,5 +11,5 @@ public @interface MarsTimer {
* 循环间隔
* @return
*/
- long loop();
+ int loop() default 60000;
}
diff --git a/mars-core/src/main/java/com/mars/core/constant/MarsConstant.java b/mars-core/src/main/java/com/mars/core/constant/MarsConstant.java
index 5d0087c..9325f34 100644
--- a/mars-core/src/main/java/com/mars/core/constant/MarsConstant.java
+++ b/mars-core/src/main/java/com/mars/core/constant/MarsConstant.java
@@ -33,6 +33,10 @@ public class MarsConstant {
* 记录是否已经调用完createBean方法了
*/
public static final String HAS_START="hasStart";
+ /**
+ * 记录netty是否已经启动了
+ */
+ public static final String HAS_NETTY_START="hasNettyStart";
/**
* 记录是否已经启动过单测了
*/
@@ -68,6 +72,11 @@ public class MarsConstant {
*/
public static final String MARS_BEAN_OBJECTS = "marsBeanObjects";
+ /**
+ * 所有加了MarsTimer注解的方法
+ */
+ public static final String MARS_TIMER_OBJECTS = "marsTimerObjects";
+
/**
* 接受远程配置中心通知的controller
*/
diff --git a/mars-core/src/main/java/com/mars/core/load/LoadHelper.java b/mars-core/src/main/java/com/mars/core/load/LoadHelper.java
new file mode 100644
index 0000000..d2c6d46
--- /dev/null
+++ b/mars-core/src/main/java/com/mars/core/load/LoadHelper.java
@@ -0,0 +1,118 @@
+package com.mars.core.load;
+
+import com.mars.core.annotation.MarsBean;
+import com.mars.core.annotation.Resource;
+import com.mars.core.constant.MarsConstant;
+import com.mars.core.constant.MarsSpace;
+import com.mars.core.model.MarsBeanModel;
+import com.mars.core.model.MarsTimerModel;
+import com.mars.core.util.StringUtil;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 加载工具类
+ */
+public class LoadHelper {
+
+ /**
+ * 获取全局存储空间
+ */
+ private static MarsSpace constants = MarsSpace.getEasySpace();
+
+ /**
+ * 获取Bean的名称
+ * @param map
+ * @param cls
+ * @return
+ */
+ public static String getBeanName(Map map,Class> cls){
+ MarsBean marsBean = (MarsBean)map.get("annotation");
+ String beanName = marsBean.value();
+ return getBeanName(beanName,cls);
+ }
+
+ /**
+ * 获取Bean的名称
+ * @param cls
+ * @return
+ */
+ public static String getBeanName(String beanName,Class> cls){
+ if(beanName == null || beanName.equals("")) {
+ beanName = StringUtil.getFirstLowerCase(cls.getSimpleName());
+ }
+ return beanName;
+ }
+
+ /**
+ * 获取字段名
+ * @param resource
+ * @param f
+ * @return
+ */
+ public static String getResourceName(Resource resource, Field f){
+ String filedName = resource.value();
+ if(filedName == null || filedName.equals("")) {
+ filedName = f.getName();
+ }
+ return filedName;
+ }
+
+ /**
+ * 获取所有的加了MarsBean注解的基础数据
+ * @return
+ */
+ public static List