# monolithic_arch_springboot **Repository Path**: fastmove/monolithic_arch_springboot ## Basic Information - **Project Name**: monolithic_arch_springboot - **Description**: 周志明凤凰架构源码-单体架构 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2022-07-27 - **Last Updated**: 2022-07-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Fenix's BookStore后端:以单体架构实现
如果你此时并不曾了解过什么是“The Fenix Project”,建议先阅读这部分内容。 单体架构是Fenix's Bookstore'第一个版本的服务端实现,它与此后基于微服务(Spring Cloud、Kubernetes)、服务网格(Istio)、无服务(Serverless)架构风格实现的其他版本,在业务功能上的表现是完全一致的。如果你不是针对性地带着解决某个具体问题、了解某项具体工具、技术的目的而来,而是时间充裕,希望了解软件架构的全貌与发展的话,笔者推荐以此工程入手来了解现代软件架构,因为单体架构的结构是相对直观的,易于理解的架构,对后面接触的其他架构风格也起良好的铺垫作用。此外,笔者在对应的文档中详细分析了作为一个架构设计者,会考虑哪些的通用问题,希望把抽象的“架构”一词具象化出来。 ## 运行程序 以下几种途径,可以运行程序,浏览最终的效果: - 通过Docker容器方式运行: > ```bash > $ docker run -d -p 8080:8080 --name bookstore icyfenix/bookstore:monolithic > ``` > > 然后在浏览器访问:[http://localhost:8080](http://localhost:8080),系统预置了一个用户(user:icyfenix,pw:123456),也可以注册新用户来测试。 > > 默认会使用HSQLDB的内存模式作为数据库,并在系统启动时自动初始化好了Schema,完全开箱即用。但这同时也意味着当程序运行结束时,所有的数据都将不会被保留。 > > 如果希望使用HSQLDB的文件模式,或者其他非嵌入式的独立的数据库支持的话,也是很简单的。以常用的MySQL/MariaDB为例,程序中也已内置了MySQL的表结构初始化脚本,你可以使用环境变量“PROFILES”来激活SpringBoot中针对MySQL所提供的配置,命令如下所示: > > ```bash > $ docker run -d -p 8080:8080 --name bookstore icyfenix/bookstore:monolithic -e PROFILES=mysql > ``` > > 此时你需要通过Docker link、Docker Compose或者直接在主机的Host文件中提供一个名为“mysql_lan”的DNS映射,使程序能顺利链接到数据库,关于数据库的更多配置,可参考源码中的[application-mysql.yml](https://github.com/fenixsoft/monolithic_arch_springboot/blob/70f435911b0e0753d7e4cee27cd96304dbef786d/src/main/resources/application-mysql.yml)。 - 通过Git上的源码,以Maven运行: >```bash ># 克隆获取源码 >$ git clone https://github.com/fenixsoft/monolithic_arch_springboot.git > ># 进入工程根目录 >$ cd monolithic_arch_springboot > ># 编译打包 ># 采用Maven Wrapper,此方式只需要机器安装有JDK 8或以上版本即可,无需包括Maven在内的其他任何依赖 ># 如在Windows下应使用mvnw.cmd package代替以下命令 >$ ./mvnw package > ># 运行程序,地址为localhost:8080 >$ java -jar target/bookstore-1.0.0-Monolithic-SNAPSHOT.jar >``` > >然后在浏览器访问:[http://localhost:8080](http://localhost:8080),系统预置了一个用户(user:icyfenix,pw:123456),也可以注册新用户来测试。 - 通过Git上的源码,在IDE环境中运行: > - 以IntelliJ IDEA为例,Git克隆本项目后,在File -> Open菜单选择本项目所在的目录,或者pom.xml文件,以Maven方式导入工程。 > > - IDEA将自动识别出这是一个SpringBoot工程,并定位启动入口为BookstoreApplication,待IDEA内置的Maven自动下载完所有的依赖包后,运行该类即可启动。 > > - 如你使用其他的IDE,没有对SpringBoot的直接支持,亦可自行定位到BookstoreApplication,这是一个带有main()方法的Java类,运行即可。 > > - 可通过IDEA的Maven面板中Lifecycle里面的package来对项目进行打包、发布。 > > - 在IDE环境中修改配置(如数据库等)会更加简单,具体可以参考工程中application.yml和application-mysql.ylm中的内容。 ## 技术组件 Fenix's BookStore单体架构后端尽可能采用标准的技术组件进行构建,不依赖与具体的实现,包括: - [JSR 370:Java API for RESTful Web Services 2.1](https://jcp.org/en/jsr/detail?id=370)(JAX-RS 2.1)