0


springboot项目架构

前言

Spring Boot是一个开源的Java基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它简化了基于Spring的应用开发,你只需要“启动”即可。

一、springboot概述

  • 在 Spring Boot 出现之前,使用 Spring 框架开发应用程序时,开发人员需要花费大量时间进行复杂的配置,包括配置各种 XML 文件或者 Java 配置类来整合 Spring 的各个模块,如 Spring MVC、Spring Data 等。Spring Boot 的目标就是简化这一过程,减少配置的复杂性,让开发者能够快速启动项目并专注于业务逻辑的实现。

二、详细开发步骤

(一)环境搭建
  1. JDK 安装与配置 确保 JDK 正确安装并配置了环境变量。可以通过在命令行中输入java -version来检查 JDK 是否安装成功以及版本信息。
  2. IDE 选择与安装- IntelliJ IDEA:一款功能强大的 Java 开发 IDE,具有智能代码补全、强大的调试功能等。安装后,可以根据个人喜好进行一些基本的设置,如设置主题、字体等。- Eclipse:也是广泛使用的 Java 开发工具,支持丰富的插件扩展。同样需要完成安装和基本的环境配置。
(二)创建 Spring Boot 项目
  1. 使用 Spring Initializr(在线方式)- Spring Initializr(https://start.spring.io/)是 Spring 官方提供的创建 Spring Boot 项目的工具。可以在网页上填写项目的基本信息,包括: - Group:一般是公司或组织的域名倒写,如com.example。- Artifact:项目的名称,如myproject。- Name:项目的显示名称,可以和 Artifact 相同。- Description:项目的描述信息。- Packaging:选择项目的打包方式,通常是jar(用于构建独立的可执行的 Java 应用程序)或war(用于部署到 Web 容器中),这里一般选择jar。- Java 版本:选择合适的 Java 版本,如1117等。- 在 “Dependencies” 部分,添加所需的依赖。对于 Web 项目,必须添加 “Spring Web”。此外,还可以根据项目需求添加其他依赖,如数据库相关的依赖(Spring Data JPAMySQL Driver等)、安全相关依赖(Spring Security)等。- 点击 “Generate” 按钮,下载生成的项目压缩包,然后在 IDE 中解压并打开该项目。
  2. 使用 IDE 中的 Spring Initializr 插件(以 IntelliJ IDEA 为例)- 在 IntelliJ IDEA 中,选择 “File”->“New”->“Project”,在弹出的对话框中选择 “Spring Initializr”。- 在右侧的面板中,可以配置与在线 Spring Initializr 类似的项目信息和依赖,配置完成后点击 “Next” 和 “Finish” 按钮,IDE 会自动创建项目结构
(三)项目结构解析
  1. src/main/java 这是项目的主要 Java 代码目录,所有的业务逻辑代码、控制器、服务层、数据访问层等代码都放在这里。代码一般按照包名进行组织,包名通常与项目的groupIdartifactId相关,如com.example.myproject.controllercom.example.myproject.service等。
  2. src/main/resources- application.properties 或 application.yml:这是 Spring Boot 的核心配置文件。可以在其中配置服务器端口(server.port)、数据库连接信息、日志级别等各种应用程序的配置参数。例如: - application.properties
server.port=8081
# 配置日志级别
logging.level.com.example.myproject=DEBUG
  • application.yml
server:
  port: 8081
logging:
  level:
    com.example.myproject: DEBUG
  • static 目录(可选):用于存放静态资源,如 HTML、CSS、JavaScript 文件。当构建 Web 应用时,这些资源可以直接被访问。例如,可以将index.html放在static目录下,在浏览器中访问http://localhost:8080(假设应用运行在 8080 端口)时,会默认显示index.html
  • templates 目录(可选,当使用模板引擎时):如果使用了模板引擎(如 Thymeleaf、FreeMarker 等),可以将模板文件放在这个目录下。模板引擎可以将数据和模板结合生成动态的 HTML 页面。
  1. src/test/java 用于存放单元测试和集成测试代码。可以使用 Spring 提供的测试框架以及一些测试库(如 JUnit、Mockito 等)来对项目中的各个组件进行测试。例如,可以编写一个简单的单元测试来测试HelloWorldController中的hello()方法:
package com.example.myproject.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(HelloWorldController.class)
public class HelloWorldControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testHello() throws Exception {
        mockMvc.perform(get("/hello"))
              .andExpect(status().isOk())
              .andExpect(content().string("Hello, World!"));
    }
}
(四)创建一个简单的 RESTful API(续)
  1. 控制器层(Controller)- 请求映射注解: - @RestController@Controller@ResponseBody的组合注解。@Controller用于标记该类是一个 Spring MVC 的控制器,@ResponseBody表示方法的返回值直接作为 HTTP 响应体返回,而不是解析为视图名称。- @GetMapping@PostMapping@PutMapping@DeleteMapping等注解用于将 HTTP 请求映射到特定的方法。例如,@GetMapping("/hello")表示当接收到 HTTP GET 请求且路径为/hello时,执行对应的方法。这些注解可以接受额外的参数,如producesconsumes,用于指定响应和请求的媒体类型(如application/json)。- 方法参数绑定: - 在控制器方法中,可以接受各种类型的参数。例如,可以接受请求路径中的参数(使用@PathVariable注解)、请求体中的参数(使用@RequestBody注解,一般用于接收 JSON 格式的数据)、请求参数(使用@RequestParam注解)等。
  2. 请求处理流程 当客户端发送一个 HTTP 请求到 Spring Boot 应用时,Spring MVC 的DispatcherServlet会接收到请求,并根据请求的 URL 找到对应的控制器方法。方法执行完成后,将结果作为响应返回给客户端。
(五)数据库集成(以 MySQL 和 Spring Data JPA 为例,续)
  1. 实体类(Entity)- JPA 注解: - @Entity注解表示这个类是一个 JPA 实体类,会被映射到数据库中的一张表。- @Id注解标记实体类的主键。- @GeneratedValue(strategy = GenerationType.IDENTITY)表示主键的生成策略是数据库自动生成(适用于 MySQL 的自增主键)。- 还可以使用其他注解来定义实体类的属性和数据库表的映射关系,如@Column(用于指定列名、长度等属性)、@OneToMany@ManyToOne等(用于定义实体之间的关联关系)。
  2. 数据访问层(Repository)- 继承 JpaRepositoryUserRepository接口继承自JpaRepository<User, Long>。这里User是实体类类型,Long是主键类型。JpaRepository提供了大量的方法来实现对数据库的基本操作,如findAll()findById()save()deleteById()等。- 自定义查询方法(可选):除了使用JpaRepository提供的默认方法外,还可以在Repository接口中定义自定义的查询方法。例如,如果要根据用户的名字查找用户,可以在UserRepository中添加以下方法:
List<User> findByName(String name);

Spring Data JPA 会根据方法名自动生成相应的 SQL 查询语句。
3. 事务管理(自动配置):Spring Boot 与 Spring Data JPA 集成时,会自动配置事务管理。默认情况下,在

@Service

@Repository

等注解标记的类中的方法,都会在一个事务中执行。如果需要对事务进行更精细的控制,可以使用

@Transactional

注解。

(六)项目打包与部署
  1. 打包 在 IDE 中,可以使用 Maven 或 Gradle(根据项目创建时选择的构建工具)来打包项目。对于 Maven 项目,可以在命令行中进入项目根目录,然后运行mvn package命令。这会在target目录下生成一个可执行的jar文件(如果项目的Packaging设置为jar)。
  2. 运行 可以在命令行中使用java -jar your_project_name.jar来运行打包后的项目。也可以将jar文件部署到服务器环境中,根据服务器的配置和需求来启动应用。

这是一个比较全面的 Spring Boot 项目开发介绍,实际项目中还可以根据具体需求进一步扩展和优化,比如添加缓存、消息队列、分布式配置等功能。


总结

本文围绕 Spring Boot 展开。首先介绍它是基于 Spring 框架的开源 Java 开发框架,目的是简化 Spring 应用开发中的配置难题,让开发者聚焦业务逻辑。

其特点众多:一是自动配置,按项目依赖自动配置 Spring 应用组件,遵循约定优于配置原则,如自动配置 Web 相关组件。二是有起步依赖,是精心挑选、相互兼容的依赖库集合,如

spring-boot-starter-web

包含构建 Web 应用所需依赖,避免版本冲突。三是内置服务器支持,能打包成可执行 JAR 并内置服务器(如 Tomcat、Jetty、Undertow),运行时自动启动,默认端口 8080。四是配置方式简化,可通过

application.properties

application.yml

修改参数。五是有强大监控管理功能,Actuator 模块可查看应用状态、健康状况等。

在应用场景方面,可用于 Web 应用开发(包括简单 RESTful API 和复杂应用)、微服务架构(每个微服务可独立为 Spring Boot 应用,便于开发部署和通信)以及数据处理与持久化(结合 Spring Data 相关依赖与数据库交互)。

它与 Spring 框架关系紧密,构建于 Spring 之上,对其封装优化,保留并使用了 Spring 的核心概念,降低了开发门槛。

标签: spring boot 后端 java

本文转载自: https://blog.csdn.net/2302_79959151/article/details/143265074
版权归原作者 怡文261 所有, 如有侵权,请联系我们删除。

“springboot项目架构”的评论:

还没有评论