【SpringBoot】0基础学习SpringBoot前置必备知识补全

一、SSM和SpringBoot的区别

“SSM”通常特指“Spring + Spring MVC + MyBatis”的组合,这是一个针对 Java web 应用的常用技术栈。然而,Spring Boot 的目标和功能远远超出了这一组合。

Spring BootSSM (Spring + Spring MVC + MyBatis) 是两种流行的 Java 开发框架,它们各有特点和应用场景。以下是它们的主要区别:

1. 概念与组成

  • Spring Boot:

    • Spring Boot 是一个基于 Spring 的框架,旨在简化新 Spring 应用的创建和开发过程。它通过提供大量的自动配置(convention over configuration),启动器(starters)和运行时环境,让开发者能够快速启动和运行新的应用,而无需花费大量时间在配置和管理上。
    • Spring Boot 并不是替代 Spring 的基础功能,而是在此之上提供快速开发的能力
  • SSM (Spring + Spring MVC + MyBatis):

    • SSM 是一个由三个主要部分组成的框架组合,主要用于 Web 应用开发。
      • Spring:负责提供依赖注入和 IoC 容器。
      • Spring MVC:作为 Web 层框架,处理 HTTP 请求和响应。
      • MyBatis:是一个持久层框架,用于操作数据库。它支持定制 SQL、存储过程以及高级映射。

2. 配置与启动

  • Spring Boot:

    • 提供自动配置,尽量减少了配置的需求,使用注解和默认属性来简化配置过程。
    • 内置服务器支持(如 Tomcat、Jetty),无需单独部署 WAR 文件。
  • SSM:

    • 需要显式配置每一个组件,包括数据源、事务管理、Web 控制器等,通常通过 XML 或注解配置。
    • 通常需要部署到一个外部的 Servlet 容器中,如 Tomcat。

3. 开发与部署

  • Spring Boot:

    • 支持独立的 Java 应用程序启动,可以打包为一个包含依赖、资源和服务器容器的可执行 JAR 文件,简化了部署过程。
    • 强调无代码生成和无需 XML 配置。
  • SSM:

    • 开发时需要详细的配置和管理每一层的交互。
    • 部署时通常需要打包为 WAR 文件,并部署到 Web 服务器中。

4. 适用场景

  • Spring Boot:

    • 非常适合所有类型的 Spring 应用程序,特别是希望快速开发和上线的微服务和独立应用。
    • 适用于需要快速迭代和部署的现代化企业应用。
  • SSM:

    • 适用于需要细致控制各个层次配置的传统企业级应用。
    • 适合于团队熟悉 Spring 和 MyBatis 的环境。

5 总结

Spring Boot 和 SSM 都是基于 Spring 框架的开发模式,但 Spring Boot 提供了更现代、快速且简化的开发体验,而 SSM 更注重于传统的、细粒度控制的开发方式。选择哪一个主要取决于项目需求、团队熟悉的技术栈以及希望投入到配置和管理的程度。

二、Model-View-Controller(MVC)架构

在使用 Spring MVC 时,无论是 Spring 还是 Spring Boot,通常都会采用 Model-View-Controller(MVC)架构。这意味着应用会分为控制器层、服务层、数据访问层(Repository)和模型层

三、Ioc容器

四、SpringBoot和Spring

Spring Boot 是 Spring 生态系统中的一个项目,它基于 Spring 框架的核心功能构建,旨在简化 Spring 应用程序的开发、配置和部署过程。下面将详细解释 Spring Boot 的本质及其与 Spring 框架的关系。

1 Spring Boot 是什么?

Spring Boot 是一个框架,其核心目标是简化 Spring 应用的配置和启动过程。它通过约定优于配置的原则(convention over configuration),自动配置 Spring 应用程序所需的大部分基础设施。Spring Boot 通过以下方式实现其目标:

  • 自动配置:Spring Boot 可以根据类路径下的库自动配置应用程序的组件。例如,如果 Spring Boot 在类路径中检测到数据库连接池库,它将自动配置数据库连接池。

  • 起步依赖:Spring Boot 提供了一系列的“起步依赖”(starters),这些依赖为应用程序提供了快速的依赖聚合,确保你获得了所有必要的依赖,这些依赖适用于特定的功能,比如数据库操作、消息传递、社交功能等。

  • 内嵌服务器:Spring Boot 应用通常包含一个内嵌的 HTTP 服务器(如 Tomcat、Jetty 或 Undertow),这意味着不需要部署 WAR 文件。你可以创建一个单一的可执行 JAR 文件,包含所有必要的依赖、类和资源,简化了部署和服务启动的过程。

  • 环境管理:Spring Boot 提供了强大的配置管理功能,可以通过外部配置(properties 或 YAML 文件、环境变量等)来管理应用的配置,而不是硬编码在代码中。

  • 就绪生产特性:Spring Boot 提供了许多生产就绪的特性,如健康检查、度量、外部配置等。

2 Spring Boot 与 Spring 的关系

Spring Boot 并不是替代 Spring 框架的存在,而是基于 Spring 框架建立的,提供了一种更快速、更易于开发的方式来使用 Spring 的功能

  • 基于 Spring:Spring Boot 完全基于 Spring 框架,它利用了 Spring 的依赖注入和控制反转来实现其功能。
  • 扩展 Spring:Spring Boot 扩展了 Spring,通过提供自动配置和其他便利功能,使得开发者可以专注于应用程序的功能,而不是配置的细节。
  • 简化 Spring 应用开发:Spring Boot 的目的是简化 Spring 应用的创建和开发过程,使开发者能够快速启动和运行新的 Spring 应用,同时减少传统的 Spring 配置工作。

3 总结

Spring Boot 是一个使 Spring 应用开发更快、更易管理的工具,它并没有改变 Spring 的核心原则和功能,而是提供了一个更快捷的方法来设置和运行基于 Spring 的项目。通过使用 Spring Boot,开发者可以更快地建立起项目并运行,同时还能享受 Spring 框架的全部强大功能。

五、SpringBoot代码框架快速入门理解逻辑

1. 控制层(Controller Layer)

作用

  • 控制层的主要任务是处理来自外部的请求,调用下层的服务层完成具体的业务操作,并返回相应的结果(数据或视图)。

实现

  • 在 Spring Boot 中,控制层通过 @RestController 注解类来实现。@RestController 是一个组合注解,它包含了 @Controller@ResponseBody,表示返回的数据将自动以 JSON 或其他格式写入 HTTP 响应体。

示例

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        User user = userService.getUserById(id);
        return ResponseEntity.ok(user);
    }
}

2. 服务层(Service Layer)

作用

  • 服务层负责执行具体的业务逻辑。这一层处理应用的主要业务功能,如数据计算、业务规则验证等。

实现

  • 服务层通常由 @Service 注解的类实现。在这一层,你可能会使用事务管理,这可以通过 @Transactional 注解来处理。

示例

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    @Transactional(readOnly = true)
    public User getUserById(Long id) {
        return userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User not found"));
    }
}

3. 数据访问层(Repository Layer)

作用

  • 数据访问层负责与数据库进行交互。它执行所有的 CRUD(创建、读取、更新、删除)操作和其他数据库查询。

实现

  • 在 Spring Boot 中,数据访问层通常是通过 Spring Data JPA 实现的。通过扩展 JpaRepository 或其他相关接口,开发者可以利用 Spring Data JPA 提供的方法,或者定义自定义查询。

示例

public interface UserRepository extends JpaRepository<User, Long> {
    // Spring Data JPA 提供的方法已经足够用于大多数 CRUD 操作
}

4. 实体层(Entity Layer)

作用

  • 实体层定义了业务数据模型,通常对应于数据库中的一个表。

实现

  • 实体通过 @Entity 注解标记,每个实体类代表数据库中的一张表。使用 JPA 注解如 @Id, @Column 等来描述其结构。

示例

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "username")
    private String username;

    // Getters and setters...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yorelee.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值