/** * 解析项目规范 * * @param groupConventionAnnotation 组织级注解 * @return 项目规范信息 */ ProjectConvention parseProjectConvention(GroupConventionAnnotation groupConventionAnnotation) { String className = groupConventionAnnotation.projectConventionClass(); Class<?> clazz; try { clazz = Thread.currentThread().getContextClassLoader().loadClass(className); } catch (ClassNotFoundException e) { return new ProjectConvention() { @Override public String id() { return ""; } @Override public void configure(Binder binder) {} }; } ProjectConvention projectConvention = null; if (ProjectConvention.class.isAssignableFrom(clazz)) { // TODO:需要描述,为何抛错,这个类必须继承ProjectConvention并实现,并且构造函数必须无参。 projectConvention = ProjectConvention.class.cast(newInstanceByClass(clazz, "")); } if (projectConvention != null) return projectConvention; throw ArgoException.raise( String.format("Class %s not implement ProjectConvention!", className)); }