mirror of
https://github.com/wahyd4/Martian.git
synced 2026-08-09 05:16:21 +10:00
新增扫描注解
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<artifactId>Mars</artifactId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<artifactId>mars-core</artifactId>
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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<String> scanClassList = LoadHelper.getSacnClassList();
|
||||
|
||||
/* 扫描包下面的所有类 */
|
||||
Set<String> classList = ReadClass.loadClassList(packageName);
|
||||
Set<String> scanClassList = scanClassList(packageName);
|
||||
|
||||
/* 加载本地bean */
|
||||
Set<String> 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<String> scanClassList(String[] packageName) throws Exception {
|
||||
Set<String> scanClassList = LoadHelper.getSacnClassList();
|
||||
for(String pkName : packageName){
|
||||
Set<String> classList = ReadClass.loadClassList(pkName);
|
||||
scanClassList.addAll(classList);
|
||||
}
|
||||
return scanClassList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载本地Class
|
||||
*
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>Mars</artifactId>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>mars-jdbc</artifactId>
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<artifactId>Mars</artifactId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<artifactId>mars-mvc</artifactId>
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>Mars</artifactId>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<artifactId>Mars</artifactId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<artifactId>mars-server</artifactId>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>Mars</artifactId>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
+27
-8
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>Mars</artifactId>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>Mars</artifactId>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.yuyenews</groupId>
|
||||
<artifactId>Mars</artifactId>
|
||||
<version>3.0.13</version>
|
||||
<version>3.0.15</version>
|
||||
</parent>
|
||||
<artifactId>mars-tomcat</artifactId>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user