CCAY-Freamwork2.0 是面向服务,全面支持Web2.0的Java Web开发框架
前后端完全分离,前端使用bootstrap作为基础样式库,并提供表格、树、选择控件等丰富的高易用性的UI组件,可满足从微小应用到企业级应用需求;后端采用Spring4作为基础框架,结合CXF提供SOAP及REST Web服务,Mybatis提供持久层支持。配合Ehcache、log4j、消息中间件等实现框架功能。
1、高可扩展性
框架本身提供大量的可配置属性,并提供合理的默认值,通常可以通过修改配置属性来实现不同的逻辑(或技术)支持;您可以覆盖任何框架提供的默认逻辑而定制实现自己的逻辑:可以基于框架提供的各个功能的接口来实现扩展,或者覆盖框架中的Spring Bean定义,甚至可以覆盖任何一个class类的字节码
2、高可用性
大多数情况下,框架的提供的可配置属性均可以在非停机方式下动态修改,并立即在系统中体现。可动态添加枚举值,动态修改html,css样式,动态修改邮件模板等,如果系统处于集群部署环境下,这些修改会自动同步到其他JVM中并立即生效。
3、高适应性
您可以将你的应用不做调整(或仅做配置调整)就可以部署在任何J2EE标准的容器中,Jetty,tomcat,Docker,Jboss等;支持集群部署,并具有内建的session同步及缓存同步机制;
4、易用性
为最终系统使用用户,提供大量精心设计的前端UI组件,可以帮助用户方便的使用系统,提供联想录入,历史录入自动完成,弹框选择,表格个性化设置,Excel批量操作等等;为开发人员提供详尽的开发文档及丰富的实例参考,可以使开发人员快速上手并迅速提高;内置多种工程工具,可方便的管理SQL脚本,导入导出配置信息,构建工具等。
5、安全性
基于RBAC设计,并对角色进行进一步扩展细分,可支持企业级复杂权限需求;使用Shiro作为基础安全框架,提供基于Spring Aop方法拦截的调用安全检查;扩展Mybatis动态脚本,提供数据级动态过滤;屏蔽高风险语言特性,例如取消Mybatis Mapper的${}的支持;
6、互操作性
可借助CXF及Spring方便的暴漏或调用WebService接口
1、REST服务支持
使用CXF对RESTful服务提供支持,可以使用@GET、@POST、@PUT、@DELETE等基于Java标准的RESTful API对外提供服务,详情能力请参照CXF官方文档。
2、持久层支持
使用Mybatis作为持久化框架,并对Mybatis的动态语言进行扩展: 可以在Mapper XML中引用当前系统上下文,从而获取当前用户,角色,语言等信息而无需在作为参数传入; 内置的分页插件可以避免书写分页逻辑; 内置的扩展标签可以支持动态排序,动态筛选,及基于当前用户权限的数据权限过滤; 支持多种数据库产品使用相同的mapperXML文件,并可以根据当前数据库产品编写特定逻辑
3、权限系统支持
基于RBAC设计并对角色进行按照维度细分的权限模型,可以满足从基本权限及任何复杂权限需求的支持。采用Shiro作为基本的权限实现框架,扩展了AOP拦截注解,权限校验,数据权限控制等,并提供前端控制机制,可方便控制菜单按钮依据权限显示。
4、缓存支持
基于Spring Cache,默认采用Ehcache作为实现,并支持分散配置方式,您可以在您任意位置申明cache类型;抛弃复杂的,具体实现相关缓存集群同步机制,内建的基于HTTP的缓存机制可以在集群环境下自动同步缓存。
5、枚举型支持
为了完全避免魔鬼数字的出现,对Java语言的枚举类型语义进行了扩展,支持动态扩展枚举项;在JavaScript,CXF数据绑定,POJO,Mybatis MppperXml中均提供支持;
6、异步消息支持
提供异步消息具体实现无关的异步处理框架,可以在编写极少量代码的情况下,方便的实现异步操作。具体消息实现可以采用ThreadPool模拟,ActiveMQ、JBoosMQ、Web Sphere MQ等任何JMS标准实现,并支持Kafka。
7、国际化支持
支持国际化动态加载,意味着您可以在非停机状态下修改国际化;国际化信息均使用内存缓存,并在修改时可自动同步到多个JVM中;支持标准的ResourceBundle方式使用JAVA API获取国际化;前端使用HTML标签扩展属性及JavaScript支持国际化;
8、虚拟文件系统支持
您不用关心具体文件的存储位置,基于Apache VFS2.0封装的VFS模块将文件存储抽象为3种存储位置:临时位置,工作位置,归档位置。实际位置可以是Apache VFS2.0支持的任何文件协议路径:如本地文件系统,FTP,HDFS等。VFS模块提供常用的API完成文件的创建、删除、修改、解压、压缩、复制等功能。
9、class动态覆盖支持
基于Java Instrumentation机制,您可以修改CCAY框架或框架依赖的包中的任意class的字节码。在框架或第3方包没有合适扩展设计时,这个功能可避免你手动替换JAR中的.class文件。
10、文件上传下载支持
基于Apache Fileupload及VFS,提供IUploadFileConsumer接口,可以让您在自定义上传处理逻辑。例如:权限验证、文档类型验证、上传文件处理、文件存储位置转储。下载提供多线程处理支持,并提供IDownloadSupport接口,可以验证下载权限,下载文件流预处理等
11、Excel导入导出支持
基于PIO自定义的XML Schema可以使您方便的开发Excel的导入导出功能。可通过XML指定导入导出的列,列类型,验证器,错误提示信息,及是否将错误提示信息可附加到导入文件等,导入的IExcelDataConsumer允许您按批处理数据(如验证,持久化等),导出的IExcelDataProvider允许您按批提供数据(如分页装载的结果集或ResultSet结果集);导入导出支持百万级数据量。
12、注册项支持
注册项类似与Java Property,CCAY框架中的很多可配置数据均通过注册项的方式提供。注册项允许你从文件、数据库、甚至是某个远程配置中心加载注册项;支持动态修改注册项的值,并同步到集群中的多个JVM中;支持字符串、数字等基本类型也支持基于JSON的复杂类型;
13、审计日志支持
可以通过AOP的后置通知注解,方便的读取方法调用参数中的值,采用异步方式记录审计日志;提供API函数可以在你需要的任何地方生成并记录审计日志。
14、SQL脚本导出支持
您可以像管理代码一样管理你的SQL脚本,可以通过内建的Maven插件命令导出集中了的SQL脚本文件。 Maven骨架工程 提供的Maven Archetype,可以帮助你在瞬间搭建好基于CCAY-Freamwork的工程结构。
15、UI
基于Bootstrap并融合了近百种基于Bootstrap流行的UI组件;对前端操作的核心功能及组件进行了JavaScript API封装,可更容易的使用这些组件;提供了大量的示例及API说明文档,您几乎可以找到您所要用的所有UI示例。