简介
该项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。
前台商城系统:首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。
后台管理系统:商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
该项目使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。
组织结构
mall ├── mall-common -- 工具类及通用代码 ├── mall-mbg -- MyBatisGenerator生成的数据库操作代码 ├── mall-security -- SpringSecurity封装公用模块 ├── mall-admin -- 后台商城管理系统接口 ├── mall-search -- 基于Elasticsearch的商品搜索系统 ├── mall-portal -- 前台商城系统接口 └── mall-demo -- 框架搭建时的测试代码
后端技术
技术 |
说明 |
官网 |
SpringBoot |
容器+MVC框架 |
https://spring.io/projects/spring-boot |
SpringSecurity |
认证和授权框架 |
https://spring.io/projects/spring-security |
MyBatis |
ORM框架 |
http://www.mybatis.org/mybatis-3/zh/index.html |
MyBatisGenerator |
数据层代码生成 |
http://www.mybatis.org/generator/index.html |
Elasticsearch |
搜索引擎 |
https://github.com/elastic/elasticsearch |
RabbitMQ |
消息队列 |
https://www.rabbitmq.com/ |
Redis |
分布式缓存 |
https://redis.io/ |
MongoDB |
NoSql数据库 |
https://www.mongodb.com |
LogStash |
日志收集工具 |
https://github.com/elastic/logstash |
Kibina |
日志可视化查看工具 |
https://github.com/elastic/kibana |
Nginx |
静态资源服务器 |
https://www.nginx.com/ |
Docker |
应用容器引擎 |
https://www.docker.com |
Jenkins |
自动化部署工具 |
https://github.com/jenkinsci/jenkins |
Druid |
数据库连接池 |
https://github.com/alibaba/druid |
OSS |
对象存储 |
https://github.com/aliyun/aliyun-oss-java-sdk |
MinIO |
对象存储 |
https://github.com/minio/minio |
JWT |
JWT登录支持 |
https://github.com/jwtk/jjwt |
Lombok |
简化对象封装工具 |
https://github.com/rzwitserloot/lombok |
Hutool |
Java工具类库 |
https://github.com/looly/hutool |
PageHelper |
MyBatis物理分页插件 |
http://git.oschina.net/free/Mybatis_PageHelper |
Swagger-UI |
文档生成工具 |
https://github.com/swagger-api/swagger-ui |
Hibernator-Validator |
验证框架 |
http://hibernate.org/validator |
前端技术
技术 |
说明 |
官网 |
Vue |
前端框架 |
https://vuejs.org/ |
Vue-router |
路由框架 |
https://router.vuejs.org/ |
Vuex |
全局状态管理框架 |
https://vuex.vuejs.org/ |
Element |
前端UI框架 |
https://element.eleme.io |
Axios |
前端HTTP框架 |
https://github.com/axios/axios |
v-charts |
基于Echarts的图表框架 |
https://v-charts.js.org/ |
Js-cookie |
cookie管理工具 |
https://github.com/js-cookie/js-cookie |
nprogress |
进度条控件 |
https://github.com/rstacruz/nprogress |
架构图
系统架构图
业务架构图
效果展示
后台管理
手机前端
项目结论
该项目附带有完整的学习教程和开发部署文档,项目涉及到了很多的技术点,可用于个人学习,同时该项目可以用来二次开发,搭建一个自己的商城,也可以作为初创公司的基础架构,总之是一个不错的资源!
Spring Boot注解
@SpringBootApplication
@SpringBootApplication注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个Bean,并自动触发自动配置Bean和自动扫描组件。此注解相当于@Configuration、@EnableAutoConfiguration和@ComponentScan的组合。
在Spring Boot应用程序的主类中,就使用了此注解。示例代码如下:
@SpringBootApplication
public class Application{
public static void main(String [] args){
SpringApplication.run(Application.class,args);
}
}
@EnableAutoConfiguration
@EnableAutoConfiguration注解用于通知Spring,根据当前类路径下引入的依赖包,自动配置与这些依赖包相关的配置项。
@ConditionalOnClass与@ConditionalOnMissingClass
这两个注解属于类条件注解,它们根据是否存在某个类作为判断依据来决定是否要执行某些配置。下面是一个简单的示例代码:
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoConfiguration {
//...
}
@ConditionalOnBean与@ConditionalOnMissingBean
这两个注解属于对象条件注解,根据是否存在某个对象作为依据来决定是否要执行某些配置方法。示例代码如下:
@Bean
@ConditionalOnBean(name="dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory(){
//...
}
@Bean
@ConditionalOnMissingBean
public MyBean myBean(){
//...
}
@ConditionalOnProperty
@ConditionalOnProperty注解会根据Spring配置文件中的配置项是否满足配置要求,从而决定是否要执行被其标注的方法。示例代码如下:
@Bean
@ConditionalOnProperty(name="alipay",havingValue="on")
Alipay alipay(){
return new Alipay();
}
@ConditionalOnResource
此注解用于检测当某个配置文件存在使,则触发被其标注的方法,下面是使用此注解的代码示例:
@ConditionalOnResource(resources = "classpath:website.properties")
Properties addWebsiteProperties(){
//...
}
@ConditionalOnWebApplication与@ConditionalOnNotWebApplication
这两个注解用于判断当前的应用程序是否是Web应用程序。如果当前应用是Web应用程序,则使用Spring WebApplicationContext,并定义其会话的生命周期。下面是一个简单的示例:
@ConditionalOnWebApplication
HealthCheckController healthCheckController(){
//...
}
@ConditionalExpression
此注解可以让我们控制更细粒度的基于表达式的配置条件限制。当表达式满足某个条件或者表达式为真的时候,将会执行被此注解标注的方法。
@Bean
@ConditionalException("${localstore} && ${local == 'true'}")
LocalFileStore store(){
//...
}
@Conditional
@Conditional注解可以控制更为复杂的配置条件。在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求。下面是使用该注解的简单示例:
@Conditioanl(CustomConditioanl.class)
CustomProperties addCustomProperties(){
//...
}
总结
源码及资料获取方式:关注小编+转发文章+私信【777】免费获取 重要的事情说三遍,转发+转发+转发,一定要记得点赞转发哦!!!