产品技术架构和代码自动生成

1.工程简介

1.1管理后台UI框架设计思想

管理后台UI界面使用dwz UI框架,整个后台页面为一个统一的页面,所有工作区标签页内容使用ajax请求获取,然后以html片段形式追加到后台页面中,然后对追加的页面进行js效果初始化,对比json方式交互渲染页面过程更简单。

1.2程序设计思想

软件使用了SpringMVC, Spring Boot, Hibernate, Hibernate Search,Mybatis, FreeMarker, Mysql jdbc, c3p0, jedis, jackson, quartz, Apache commons及其依赖的包,包依赖关系、工程编译等工作由Maven,gradle处理。

软件请求由多个Servlet响应分别是:后台Servlet,前台Servlet,接口Servlet,静态文件Servlet,安装Servlet。

其中后台Servlet,前台Servlet,接口Servlet交给SpringMVC中的DispatcherServlet处理。其中IndexAdminController, IndexController映射了默认的请求处理,优先等级最低,请求处理逻辑为直接渲染请求路径对应的页面模板。页面模板渲染过程可以使用FreeMarker指令扩展获取需要的数据,降低了控制层改动频率,实现了视图层JAVA代码的最大化复用,表单的处理则采用了传统的SpringMVC Controller接收并处理的方式。

1.3命名规范与工程结构

Java代码:

        .common                 工具类、解决方案类等同用类包

                 .base                基础类包

                 .datasource     数据源包

                 .directive          指令基础包

                 .cache              缓存包

                 .constants        常量定义类包

                 .handler           分页处理,查询处理,FreeMarker异常等处理器包

                 .generator       代码生成工具包

                 .search             全文搜索组件

                 .servlet             Servlet包

                 .tools                工具类包

                 .view                视图层基础包

        .entities                    实体类包

        .logic                         逻辑类包

                 .component     组件包

                 .dao                 数据库操作类包

                 .service            事务与逻辑封装类包

        .controller                控制器类包

                 .web                 前台站点控制器类包

                 .admin             管理后台控制器类包

                 .api                   接口控制器包

        .views                       视图类包

                 .directive         freemaker自定义指令类包

                 .method           freemaker自定义方法类包

                 .pojo                 表单实体包

boot                                  SpringBoot入口类

config.spring                    Spring配置类

config.initializer               Servlet加载器



资源文件:

resources

        config                               配置文件

        language                           语言文件

        templates                         模板文件

                         admin              管理后台模板

                         ftl                      freemarker自动导入或包含的模板文件

                         web                  前台页面模板,优先级低于数据目录中template目录中的文件

        cms.properties                 cms配置文件

        log4j2.properties             日志配置文件

webapp

        error                                  http错误页面,仅在传统容器中部署生效

        META-INF                         java应用描述文件

        resource                           管理后台静态资源文件

        WEB-INF                           java应用安全目录

        index.html                        程序不完整提示页面,仅在程序不完整时生效

1.4启动流程

启动容器后,容器加载应用的的web.xml,扫描ServletContainerInitializer的实现类,开始spring的初始化,spring对PublicCMS多个Initializer分别进行初始化和配置类注册

1.5请求处理流程

浏览器发起请求,SpringMVC根据请求映射规则首先查找是否有Controller对应请求路径,如果有则由该Controller处理该请求,如果没有则有IndexController.page方法处理请求,该方法首先加载该路径对应的模板的元数据,判断是否允许动态访问,允许则返回模板路径,不允许则返回404错误

1.6模板路径的处理

1.7静态文件路径的处理


CMS静态文件路径处理.jpg

2.Hibernate实体自动生成

使用工程中的代码生成

1.配置数据库信息

修改配置文件publiccms\src\test\resources\hibernate\hibernate.properties总数据库信息

2.com.publiccms.common.generator. EntitysGenerator生成实体文件

3.刷新项目即可看到生成的代码

3.逻辑代码及页面自动生成

该生成方法对hibernate实体进行注解标注后,根据注解信息生成自定义指令、Controller、Service、Dao、html,是CMS开发阶段采用的生成方式

1.对实体类属性使用com.publiccms.common.generator.annotation.GeneratorColumn注解类标记字段类型【condition:是否用于查询条件,order:是否用于排序,like:查询条件是否为like匹配,or:查询条件是否为or逻辑,name:字段名,当or为true时,相同name 的字段为同一组or条件,title:字段真实含义】

2.使用com.publiccms.common.generator.SourceGenerator生成代码文件

3.刷新项目即可看到生成的代码


4.Mybatis代码自动生成

1.修改src/test/resources/generator/mybatis/generatorConfig.xml的数据库相关属性,确保数据库是正确且可连接。

2.打开src/test/java/com/publiccms/common/generator/MybatisGenerator.java的文件

3.运行main函数,将会生成Mybatis代码文件

4.刷新项目即可看到生成的代码

保存页面 更多文档 数据结构 JAVA API

0条评论
发表评论