# 项目及概念

# 常见的概念

# 什么是Spring

Spring是一个开源的Java框架,它提供了一种简单、灵活的方式来开发Java应用程序。Spring框架提供了许多功能,如依赖注入、事务管理、数据访问层、Web框架等,这些功能使得开发人员可以更快地开发出功能强大、可扩展的应用程序。

Spring是如何简化Java开发的

  • 基于POJO的轻量级和最小侵入性编程,所有东西都是bean
  • 通过IOC,依赖注入(DI)和面向接口实现松耦合;
  • 基于切面(AOP)和惯例进行声明式编程;

# 什么是Spring Boot

Spring Boot是一个基于Spring框架的简化配置和启动的框架。它提供了一种快速、简单的方式来创建独立的、生产级别的Spring应用程序。Spring Boot通过自动配置和嵌入式服务器,使得开发人员可以快速地启动和运行应用程序,而无需进行繁琐的配置。

Spring Boot的主要特性

  • 自动配置:Spring Boot可以根据应用程序的类路径和配置文件,自动配置应用程序的配置;
  • 嵌入式服务器:Spring Boot可以嵌入一个嵌入式服务器(如TomcatJettyUndertow),使得开发人员可以快速地启动和运行应用程序;
  • 简化配置:Spring Boot提供了一种简单的方式来配置应用程序,使得开发人员可以快速地启动和运行应用程序;
  • 生产就绪:Spring Boot提供了一些生产就绪的功能,如监控、健康检查、日志记录等,使得开发人员可以快速地部署和维护应用程序。

# 什么是Spring Cloud

Spring Cloud是一个基于Spring Boot的微服务架构解决方案。它提供了一系列的组件和工具,使得开发人员可以快速地构建和部署微服务应用程序。Spring Cloud的主要组件包括服务发现、配置管理、负载均衡、断路器、分布式追踪等。

Spring Cloud的主要特性

  • 服务发现:Spring Cloud提供了一种简单的方式来发现和注册服务,使得服务之间可以相互通信;
  • 配置管理:Spring Cloud提供了一种简单的方式来管理应用程序的配置,使得配置可以动态地更新;
  • 负载均衡:Spring Cloud提供了一种简单的方式来实现负载均衡,使得应用程序可以更好地利用资源;
  • 断路器:Spring Cloud提供了一种简单的方式来实现断路器,使得应用程序可以更好地处理故障;
  • 分布式追踪:Spring Cloud提供了一种简单的方式来实现分布式追踪,使得开发人员可以更好地理解应用程序的行为。

# 什么是Spring MVC

Spring MVC是一个基于Spring框架的Web框架。它提供了一种简单、灵活的方式来开发Web应用程序。Spring MVC基于模型-视图-控制器(MVC)设计模式,使得开发人员可以更好地组织和管理应用程序的代码。

Spring MVC的主要特性

  • 基于注解的配置:Spring MVC提供了一种简单的方式来配置应用程序,使得开发人员可以快速地启动和运行应用程序;
  • 视图解析:Spring MVC提供了一种简单的方式来解析视图,使得开发人员可以快速地渲染页面;
  • 表单处理:Spring MVC提供了一种简单的方式来处理表单数据,使得开发人员可以快速地处理用户输入;

# 常见目录结构

springboot项目目录结构

springboot
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── DemoApplication.java  # 主应用程序类
│   │   │               ├── controller
│   │   │               │   └── DemoController.java  # 控制器类
│   │   │               ├── service
│   │   │               │   └── DemoService.java  # 服务类
│   │   │               └── model
│   │   │               │   └── Demo.java  # 模型类
│   │   │               │__ filter # 放置一些过滤、拦截相关的代码
│   │   │               │__ aspect # 放置切面代码
│   │   │               │__ annotation # 放置项目自定义注解
│   │   │               │__ mapper #放置数据访问层代码接口
│   │   │               │__ config # 放置配置类
│   │   │               │__ utils  # 放置工具类和辅助代码
│   │   │               │__ constant #放置常量、枚举等定义  
│   │   └── resources
│   │       ├── mapper #存放mybatis的XML映射文件(如果是mybatis项目)
│   │       ├── application.yml  # 应用程序配置文件
│   │       ├── static  # 静态资源目录
│   │       └── templates  # 模板文件目录
│   └── test
│       └── java
│           └── com
│               └── example
│                   └── demo
│                       └── DemoApplicationTests.java  # 测试类
└── pom.xml  # Maven项目配置文件