diff --git a/mars-core/pom.xml b/mars-core/pom.xml
index baf1a03..85c38d1 100644
--- a/mars-core/pom.xml
+++ b/mars-core/pom.xml
@@ -5,7 +5,7 @@
com.github.yuyenews
Mars
- 3.0.13
+ 3.0.15
mars-core
diff --git a/mars-core/src/main/java/com/mars/core/annotation/MarsScan.java b/mars-core/src/main/java/com/mars/core/annotation/MarsScan.java
new file mode 100644
index 0000000..78f764f
--- /dev/null
+++ b/mars-core/src/main/java/com/mars/core/annotation/MarsScan.java
@@ -0,0 +1,10 @@
+package com.mars.core.annotation;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface MarsScan {
+ String[] packageName();
+}
diff --git a/mars-core/src/main/java/com/mars/core/load/LoadClass.java b/mars-core/src/main/java/com/mars/core/load/LoadClass.java
index aa2879e..a2fd65b 100644
--- a/mars-core/src/main/java/com/mars/core/load/LoadClass.java
+++ b/mars-core/src/main/java/com/mars/core/load/LoadClass.java
@@ -1,5 +1,6 @@
package com.mars.core.load;
+import com.alibaba.fastjson.JSON;
import com.mars.core.constant.MarsConstant;
import com.mars.core.constant.MarsSpace;
import com.mars.core.util.ReadClass;
@@ -23,29 +24,40 @@ public class LoadClass {
*
* @throws Exception 异常
*/
- public static void scanClass(String packageName) throws Exception{
+ public static void scanClass(String[] packageName) throws Exception{
try {
-
- Set scanClassList = LoadHelper.getSacnClassList();
-
/* 扫描包下面的所有类 */
- Set classList = ReadClass.loadClassList(packageName);
+ Set scanClassList = scanClassList(packageName);
/* 加载本地bean */
Set navClassList = loadNativeClass();
/* 将框架自有的Bean和扫描出来的类合并到一个集合 */
- scanClassList.addAll(classList);
scanClassList.addAll(navClassList);
/* 将扫描出来的类保存到内存中 */
marsSpace.setAttr(MarsConstant.SCAN_ALL_CLASS,scanClassList);
} catch (Exception e){
- throw new Exception("扫描["+packageName+"]包下的类发生错误",e);
+ throw new Exception("扫描["+ JSON.toJSONString(packageName)+"]包下的类发生错误",e);
}
}
+ /**
+ * 扫描框架的类
+ * @param packageName 要扫描的包名
+ * @return 扫描出来的包
+ * @throws Exception 异常
+ */
+ private static Set scanClassList(String[] packageName) throws Exception {
+ Set scanClassList = LoadHelper.getSacnClassList();
+ for(String pkName : packageName){
+ Set classList = ReadClass.loadClassList(pkName);
+ scanClassList.addAll(classList);
+ }
+ return scanClassList;
+ }
+
/**
* 加载本地Class
*
diff --git a/mars-jdbc/pom.xml b/mars-jdbc/pom.xml
index c27fe6b..8a8416d 100644
--- a/mars-jdbc/pom.xml
+++ b/mars-jdbc/pom.xml
@@ -5,7 +5,7 @@
Mars
com.github.yuyenews
- 3.0.13
+ 3.0.15
4.0.0
mars-jdbc
diff --git a/mars-mvc/pom.xml b/mars-mvc/pom.xml
index 8d8263f..603163b 100644
--- a/mars-mvc/pom.xml
+++ b/mars-mvc/pom.xml
@@ -5,7 +5,7 @@
com.github.yuyenews
Mars
- 3.0.13
+ 3.0.15
mars-mvc
diff --git a/mars-redis/pom.xml b/mars-redis/pom.xml
index b2c7b3f..35dcc05 100644
--- a/mars-redis/pom.xml
+++ b/mars-redis/pom.xml
@@ -5,7 +5,7 @@
Mars
com.github.yuyenews
- 3.0.13
+ 3.0.15
4.0.0
diff --git a/mars-server/pom.xml b/mars-server/pom.xml
index d99fb5f..ec12d6e 100644
--- a/mars-server/pom.xml
+++ b/mars-server/pom.xml
@@ -5,7 +5,7 @@
com.github.yuyenews
Mars
- 3.0.13
+ 3.0.15
mars-server
diff --git a/mars-start/mars-start-base/pom.xml b/mars-start/mars-start-base/pom.xml
index 5e8948b..44ba56e 100644
--- a/mars-start/mars-start-base/pom.xml
+++ b/mars-start/mars-start-base/pom.xml
@@ -5,7 +5,7 @@
Mars
com.github.yuyenews
- 3.0.13
+ 3.0.15
4.0.0
jar
diff --git a/mars-start/mars-start-base/src/main/java/com/mars/start/startmap/impl/StartLoadClass.java b/mars-start/mars-start-base/src/main/java/com/mars/start/startmap/impl/StartLoadClass.java
index 39412bd..e5e206a 100644
--- a/mars-start/mars-start-base/src/main/java/com/mars/start/startmap/impl/StartLoadClass.java
+++ b/mars-start/mars-start-base/src/main/java/com/mars/start/startmap/impl/StartLoadClass.java
@@ -1,5 +1,6 @@
package com.mars.start.startmap.impl;
+import com.mars.core.annotation.MarsScan;
import com.mars.core.load.LoadClass;
import com.mars.start.startmap.StartMap;
import com.mars.start.startmap.StartParam;
@@ -11,13 +12,14 @@ public class StartLoadClass implements StartMap {
/**
* 扫描包
+ *
* @param startParam 参数
* @throws Exception 异常
*/
@Override
public void load(StartParam startParam) throws Exception {
/*获取要扫描的包*/
- String className = getClassName(startParam);
+ String[] className = getClassName(startParam);
/* 获取此包下面的所有类(包括jar中的) */
LoadClass.scanClass(className);
@@ -25,19 +27,36 @@ public class StartLoadClass implements StartMap {
/**
* 截取main方法所在包名
+ *
* @param startParam 类
* @return 返回值
* @throws Exception 异常
*/
- private String getClassName(StartParam startParam) throws Exception {
- String className = startParam.getClazz().getName();
- if(className.lastIndexOf(".") > 0){
- className = className.substring(0,className.lastIndexOf("."));
+ private String[] getClassName(StartParam startParam) throws Exception {
+
+ Class> cls = startParam.getClazz();
+ String[] classNameList = null;
+
+ MarsScan marsScan = cls.getAnnotation(MarsScan.class);
+ if (marsScan != null) {
+ classNameList = marsScan.packageName();
+ } else {
+ String cName = cls.getName();
+ if (cName.lastIndexOf(".") > 0) {
+ classNameList = new String[1];
+ classNameList[0] = cName.substring(0, cName.lastIndexOf("."));
+ }
}
- if(className.indexOf(".") < 0){
- throw new Exception("启动服务的main方法所在的类,必须放在两层包名中,比如[com.mars,com.test]等,不允许放在[com,cn]等包中,更不允许放在包外面");
+ if(classNameList == null){
+ throw new Exception("请正确配置要扫描的包名");
}
- return className;
+
+ for (String className : classNameList) {
+ if (className.indexOf(".") < 0) {
+ throw new Exception("Mars只可以扫描多层包名,比如[com.mars,com.test]等,无法扫描此包[" + className + "]");
+ }
+ }
+ return classNameList;
}
}
diff --git a/mars-start/mars-start-pure/pom.xml b/mars-start/mars-start-pure/pom.xml
index 5730652..21444e3 100644
--- a/mars-start/mars-start-pure/pom.xml
+++ b/mars-start/mars-start-pure/pom.xml
@@ -5,7 +5,7 @@
Mars
com.github.yuyenews
- 3.0.13
+ 3.0.15
4.0.0
jar
diff --git a/mars-start/pom.xml b/mars-start/pom.xml
index 4adc349..9a57d03 100644
--- a/mars-start/pom.xml
+++ b/mars-start/pom.xml
@@ -5,7 +5,7 @@
Mars
com.github.yuyenews
- 3.0.13
+ 3.0.15
4.0.0
pom
diff --git a/mars-tomcat/pom.xml b/mars-tomcat/pom.xml
index 87f60f2..7c1f592 100644
--- a/mars-tomcat/pom.xml
+++ b/mars-tomcat/pom.xml
@@ -5,7 +5,7 @@
com.github.yuyenews
Mars
- 3.0.13
+ 3.0.15
mars-tomcat
diff --git a/pom.xml b/pom.xml
index ebb4454..6524778 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.github.yuyenews
Mars
- 3.0.13
+ 3.0.15
pom
mars-core