一个小论坛, 一个Java单体应用, 一个SSJ项目, 一个模块化项目

Posted 街头小贩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个小论坛, 一个Java单体应用, 一个SSJ项目, 一个模块化项目相关的知识,希望对你有一定的参考价值。

介绍

一个SpringMVC Spring JPA单体的小论坛, 这不是分布式项目, 没有全文索引搜索,不是一个前后端分离,没有集成MQ消息

软件架构

项目基于JDK 8+, 主要框架: Spring 5, Spring MVC 5, JPA2.1(基于EclipseLink实现)实现一个基础的小论坛.其它增加用户粘性的功能后期会以插件的方式接入

安装说明

  1. 基础模块: member, core, letter(内部消息), strategy(策略模块), utils(工具), decorater(装饰模块), event(事件定义), bucket(站外图片项目), thumbnail(图片裁剪), trident(前端模块)

  2. 项目(utils.selenium)的截屏采用webdriver.gecko.driver驱动, 需要设置它的系统变量,相关文章请参考:
    可以使用selenium的WebDriver将指定元素截图吗?
    geckodriver

  3. 若采用站外图片存储(非OSS),你可能需要单独再布署一个项目(bucket+thumbnail+utils), 若图片量不大也可以使用站内存储, 相关文章请参考: 聊聊WEB项目中的图片

  4. 话题的相关性(core.tag.nlp)根据标签使用Jaccard方法来显示相关性, 相关文章请参考:
    推荐系统技术 - 文本相似性计算

  5. 敏感词过滤采用hankcs 的AhoCorasickDoubleArrayTrie, 若不希望执行过滤可以直接删除(trident)WEB-INF目录下的脏词库(dictionary.txt). 相关文章请参考:
    DoubleArrayTrie和AhoCorasickDoubleArrayTrie的实用性对比,

  6. 图片的水印(thumbnail)支持图片水印和文字水印,存放位置固定在(bucket)项目的watermark目录中,图片名称为image.png,文字为text.properties. 资源文件中有相关设置(文字内容,字号,字体,颜色,是否粗体,宽和高在字体是系统内置时一般设置为0)

  7. 项目主入口(trident, spring mvc项目), 所有配置信息都在resources下的global.properties文件中,默认的项目地址为: center.test.com, 图片站外存储的项目地址为: pic.test.com,也就是哪个bucket项目. UI使用Bootstrap V3加自定义样式. 管理端的路径为:center.test.com/admin/. 第一个注册的会员默认为管理员

  8. 关于多设备适配使用spring-mobile-device 加自定义模板, PC模板的路径为: /WEB-INF/layout/page/default/, tablet(平板)模板的路径为: /WEB-INF/layout/page/tablet(进行中), mobile(手机)模板的路径为: /WEB-INF/layout/page/mobile(未开始)

  9. 模板主要使用jsp配合自定义标签库(com.apobates.forum.trident.tag包)

  10. 会员信息默认使用cookie存储(member.store模块), 客户端使用store.js来缓存. trident模块中的com.apobates.forum.member.storage.session.OnlineMemberSessionStorage是Session存储(不建议使用)。存储已完成抽像您也可以使用mongodb或redis等内存库来实现。实现完(或切换成session来存储)需要到TridentFrontConfig类中完成配置。

public class TridentFrontConfig implements WebMvcConfigurer
        //ETC
	@Bean(name="onlineMemberStorage")
	public OnlineMemberStorage getMemberStorage(CookieMetaConfig cookieConfig)
		return new com.apobates.forum.member.storage.cookie.HttpCookieProvider(cookieConfig);
	

  1. 日志文件默认存储到/home/test/logs目录中,有三个: jforum(trident模块), jforum-sql(jpa日志), bucket(bucket模块). 若需变更需要到trident的resources目录中的log4j2.xml, trident的resources目录中META-INF/persistence.xml, bucket的resources目录中的log4j2.xml. 以上说的都是在代码级别的路径

  2. 项目的演示网址: Orion jForum

  3. 开源地址: jforum

以上是关于一个小论坛, 一个Java单体应用, 一个SSJ项目, 一个模块化项目的主要内容,如果未能解决你的问题,请参考以下文章

从单体应用,微服务,容器化,小团队的微服务架构演进之路

系列免费课程汇总(Java单体应用微服务物联网SaaS)

揭秘一个小团队真正能落地的微服务架构实践

Java单体应用 - 常用框架 - 02.Spring

Java单体应用 - 常用框架 - 05.综合实例(iot-admin)

天天吹微服务,单体应用有啥不好?