电商项目第一天:项目搭建(SpringCloud)

项目结构

请添加图片描述

ChangGou-common:设置实体类和工具类
ChangGou-common-db:持久层
ChangGou-eureka:注册中心
ChangGou-service / ChangGou-service-goods:处理请求响应
ChangGou-service-api / ChangGou-service-goods-api:给上面一位提供pojo

父工程

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>ChangGou-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>ChangGou-erueka</module>
        <module>ChangGou-common</module>
        <module>ChangGou-common-db</module>
        <module>changGou-service-api</module>
        <module>ChangGou-service</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <packaging>pom</packaging>

    <!--    依赖包-->
    <dependencies>
        <!--        测试包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.6.0</version>
        </dependency>

        <!--        fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.51</version>
        </dependency>

        <!--        swqgger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

注册中心:ChangGou-eureka

只有Eureka注册中心

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ChangGou-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ChangGou-erueka</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

<!--    eureka的服务端:注册中心-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
</project>

工具类和实体类提供者:ChangGou-common

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ChangGou-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ChangGou-common</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
<!--        web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

<!--        redis使用-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

<!--        erueka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

<!--        openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

<!--        微信支付-->
        <dependency>
            <groupId>com.github.wxpay</groupId>
            <artifactId>wxpay-sdk</artifactId>
            <version>0.0.3</version>
        </dependency>

<!--        httpclient支持-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
    </dependencies>
</project>

实体类
请添加图片描述
异常处理:BaseExceptionHandler

@ControllerAdvice 注解,全局捕获异常类,只要作用在 @RequestMapping 上,所有的异常都会捕获

package com.changgou.framework.Exception;

import com.changgou.entity.Result;
import com.changgou.entity.StatusCode;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class BaseExceptionHandler {
    /**
     * 异常处理
     */
    @ExceptionHandler(value = Exception.class)
    public Result error(Exception e){
        e.printStackTrace();
        return new Result(false, StatusCode.ERROR,e.getMessage());
    }
}

持久层提供者:ChangGou-common-db

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ChangGou-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ChangGou-common-db</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

<!--    依赖-->
    <dependencies>
<!--        对changgou-common的依赖-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>ChangGou-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

<!--        通用mapper起步依赖-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>

<!--        MySQL数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

<!--        mybatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
</project>

pojo提供者:ChangGou-service-api / ChangGou-service-goods-api

ChangGou-service-api 的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ChangGou-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>changgou-service-api</artifactId>
    <packaging>pom</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <modules>
        <module>ChangGou-service-goods-api</module>
    </modules>
</project>

ChangGou-service-goods-api 的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>changgou-service-api</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ChangGou-service-goods-api</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
<!--        jpa注解-->
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

</project>

pojo
请添加图片描述

消费者 CnangGou-service / ChangGou-service-goods

CnangGou-service 的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ChangGou-parent</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Changgou-service</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>ChangGou-service-goods</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

<!--    依赖-->
    <dependencies>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>ChangGou-common-db</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

CnangGou-service 的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Changgou-service</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>ChangGou-service-goods</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>ChangGou-service-goods-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

application.yml

server:
  port: 18081
spring:
  application:
    name: goods
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.0.110:33306/changgou?useUnicode=true&characterEncoding-UTF-8&serverTimezone=UTC
    username: root
    password: 123456
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka
  instance:
    prefer-ip-address: true
feign:
  hystrix:
    enabled: true

启动类:GoodsApplication

package com.changgou.goods;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@EnableEurekaClient
@MapperScan(basePackages = {"com.changgou.goods.dao"})
public class GoodsApplication {
    public static void main(String[] args) {
        SpringApplication.run(GoodsApplication.class);
    }
}

Dao

继承了Mapper接口,就自动实现了增删改查的常用方法

package com.changgou.goods.dao;

import com.changgou.goods.pojo.Brand;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.common.Mapper;

@Component
public interface BrandMapper extends Mapper<Brand> {
}

接口:BrandService

package com.changgou.goods.service;

import com.changgou.goods.pojo.Brand;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Component;

import java.util.List;

public interface BrandService {
    /**
     * 查询所有品牌
     */
    List<Brand> findAll();

    /**
     * 根据id查询
     */
    Brand findById(Integer id);

    /**
     * 新增品牌
     */
    void add(Brand brand);

    /**
     * 修改品牌数据
     */
    void update(Brand brand);

    /**
     * 删除品牌
     */
    void delete(Integer id);

    /**
     * 多条件搜索品牌方法
     */
    List<Brand> findList(Brand brand);

    /**
     * 分页查询
     */
    PageInfo<Brand> findPage(int page,int size);

    /**
     * 多条件分页查询
     */
    PageInfo<Brand> findPage(Brand brand,int page,int size);
}

实现类:B

项目是采用目前比较流行的SpringBoot/SpringCloud构建微服务电商项目项目叫 《果然新鲜》,实现一套串联的微服务电商项目。完全符合一线城市微服务电商的需求,对学习微服务电商架构,有非常大的帮助,该项目涵盖从微服务电商需求讨论、数据库设计、技术选型、互联网安全架构、整合SpringCloud各自组件、分布式基础设施等实现一套完整的微服务解决方案。 项目使用分布式微服务框架,涉及后台管理员服务、地址服务、物流服务、广告服务、商品服务、商品类别服务、品牌服务、订单服务 、购物车服务、首页频道服务、公告服务、留言服务、搜索服务、会员服务等。  系统架构图   SpringBoot+SpringCloud+SSM构建微服务电商项目使用SpringCloud Eureka作为注册中心,实现服务治理使用Zuul网关框架管理服务请求入口使用Ribbon实现本地负载均衡器和Feign HTTP客户端调用工具使用Hystrix服务保护框架(服务降级、隔离、熔断、限流)使用消息总线Stream RabbitMQ和 Kafka微服务API接口安全控制和单点登录系统CAS+JWT+OAuth2.0分布式基础设施构建分布式任务调度平台XXL-JOB分布式日志采集系统ELK分布式事务解决方案LCN分布式锁解决方案Zookeeper、Redis分布式配置中心(携程Apollo)高并发分布式全局ID生成(雪花算法)分布式Session框架Spring-Session分布式服务追踪与调用链Zipkin项目运营与部署环境分布式设施环境,统一采用Docker安装使用jenkins+docker+k8s实现自动部署微服务API管理ApiSwagger使用GitLab代码管理(GitHub  GitEE)统一采用第三方云数据库使用七牛云服务器对静态资源实现加速 开发环境要求JDK统一要求:JDK1.8Maven统一管理依赖 统一采用Docker环境部署编码统一采用UTF-8开发工具IDEA 或者 Eclipse 
<think>好的,用户现在想学习Spring Boot,并且希望有一个具体的学习周期计划。首先,我需要回顾之前的对话历史,确保这次回答符合用户之前的要求。之前用户问的是关于2025年后端主流框架,我介绍了Spring Boot在内的多个框架,现在用户可能是在确定学习方向后,想要深入Spring Boot。 用户的需求是制定一个学习计划,所以需要明确学习路径、时间安排、资源推荐以及实践项目。考虑到用户可能是初学者,我需要将计划分阶段,从基础到进阶,逐步深入。同时,用户可能希望计划具体,比如每周的学习内容和目标,这样更容易执行。 需要确定每个阶段的时间长度,可能分为入门、核心、进阶、实战、扩展五个阶段,每个阶段大约1-2周,总共8-10周。每个阶段要涵盖关键知识点,比如Spring Boot基础、自动配置、数据访问、安全、缓存等。同时,要推荐合适的学习资源,如官方文档、书籍、在线课程等,确保用户有可靠的学习材料。 还要考虑实践项目的重要性,每个阶段结束时应该有一个小项目或练习,帮助巩固知识。最后,建议长期学习的方向,比如参与开源项目、持续学习新技术,以及考取认证等,帮助用户持续成长。 需要确保回答结构清晰,符合用户要求的Markdown格式,使用中文,正确使用LaTeX公式(如果有的话),但可能在这个学习计划中公式较少,主要用项目符号和表格来组织内容。同时,检查是否遗漏了用户可能关心的点,比如是否需要前置知识(Java基础),是否需要环境搭建指导等,在回答中应该涵盖这些内容。 最后,确保整个计划合理,时间安排不过于紧凑,兼顾理论与实践,帮助用户有效学习Spring Boot。</think>以下是为期8-10周的Spring Boot系统学习计划(含每日学习建议),基于实际工程经验设计: --- ### **第一阶段:基础筑基(1-2周)** **学习目标**:搭建完整开发环境,理解Spring Boot核心机制 **每日计划**: - **Day 1-3**:环境搭建 ```bash # 必装组件清单 JDK17+ (推荐Azul Zulu) IntelliJ IDEA Ultimate(学生可申请免费许可) Maven 3.9+(配置阿里云镜像) Docker Desktop(容器化开发) ``` - 创建首个Spring Boot项目([start.spring.io](https://start.spring.io)) - 理解pom.xml依赖管理(重点学习`spring-boot-starter-*`模式) - **Day 4-7**:核心机制 - 自动配置原理(`@SpringBootApplication`源码解析) - 配置系统(`application.yml`多环境配置) - 日志系统实战(SLF4J+Logback配置) - **Day 8-10**:RESTful开发 ```java @RestController @RequestMapping("/api/v1") public class DemoController { @GetMapping("/hello") public ResponseEntity<String> hello() { return ResponseEntity.ok("Hello Spring Boot"); } } ``` - 完成第一个API调试(Postman测试) --- ### **第二阶段:数据持久化(2周)** **学习目标**:掌握主流数据访问方案 **知识模块**: 1. **JPA/Hibernate(5天)** - 实体关系映射(`@Entity`, `@OneToMany`) - Repository模式(`CrudRepository`接口) - 事务管理(`@Transactional`注解) 2. **MyBatis进阶(3天)** - 动态SQL编写(`<if>`, `<foreach>`) - 结果集映射(`@ResultMap`) - 整合PageHelper分页插件 3. **Redis集成(2天)** ```yaml spring: redis: host: localhost port: 6379 lettuce: pool: max-active: 8 ``` - 实现缓存击穿防护(Redisson分布式锁) **实战项目**:开发图书管理系统CRUD模块(含API文档) --- ### **第三阶段:高级特性(2周)** **重点突破**: - **安全控制(3天)** - Spring Security配置(JWT认证流程) - OAuth2.0集成(第三方登录) - **消息队列(2天)** ```java @RabbitListener(queues = "orderQueue") public void processOrder(Order order) { // 业务处理 } ``` - RabbitMQ死信队列实战 - **性能优化(3天)** - Actuator监控端点配置 - JVM参数调优(GC日志分析) - 使用JMeter进行压力测试 --- ### **第四阶段:云原生实战(2周)** **核心技能**: 1. **容器化部署** ```dockerfile FROM eclipse-temurin:17-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` - 编写Dockerfile最佳实践 2. **Kubernetes集成** ```yaml apiVersion: apps/v1 kind: Deployment spec: replicas: 3 template: spec: containers: - name: springboot-app image: registry.cn-hangzhou.aliyuncs.com/yourrepo/app:1.0 ``` - Helm Chart打包实践 3. **Serverless方案** - AWS Lambda部署(冷启动优化) - 阿里云函数计算整合 --- ### **第五阶段:项目实战(1-2周)** **推荐项目选题**: - 电商秒杀系统(重点解决高并发问题) - 物联网数据中台(处理百万级设备连接) - 分布式文件存储系统(集成MinIO) **项目要求**: - 代码托管到GitHub(包含CI/CD配置) - 编写Swagger API文档 - 实现代码覆盖率>80%的单元测试 --- ### **学习资源推荐** | 类型 | 推荐内容 | |------------|--------------------------------------------------------------------------| | 官方文档 | [Spring Boot Reference](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/) | | 书籍 | 《Spring Boot实战》(丁雪丰译)、《Spring微服务实战》 | | 视频课程 | B站"雷神的Spring Boot源码解析"(免费)、Udemy"Master Microservices with Spring Boot and Spring Cloud" | | 开发工具 | Arthas诊断工具、VisualVM性能分析、GitPod云IDE | --- ### **学习效果检验** 1. 每周完成知识脑图(推荐XMind) 2. 参与GitHub开源项目(从修复简单issue开始) 3. 通过Spring认证考试([Spring Professional Certification](https://spring.io/certifications)) --- **注意事项**: 1. 建议每日编码时间≥2小时(保持手感) 2. 遇到问题优先查看官方Issue(避免无效搜索) 3. 定期参加技术沙龙(推荐Spring中国社区活动) 这个计划可根据个人基础弹性调整,重点要理解Spring Boot的"约定优于配置"哲学,后续可向Spring Cloud微服务方向延伸发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值