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