Spring Boot应用知识梳理

一.简介

Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的工具。它简化了基于 Spring 的应用程序的配置和部署过程,提供了一种快速、便捷的方式来构建独立的、生产级别的 Spring 应用程序。

Spring Boot 的一些主要优点包括:

1. 简化配置:Spring Boot 提供了自动配置功能,可以根据应用程序的依赖和环境自动配置 Spring 应用程序,减少了繁琐的配置工作。

2. 内嵌式容器:Spring Boot 内置了常用的 Web 容器,如 Tomcat、Jetty 或 Undertow,使得应用程序可以作为独立的应用程序运行,而不需要外部的 Web 服务器。

3. 自动化管理:Spring Boot 提供了许多自动化的管理功能,如健康检查、指标收集、配置管理等,使得应用程序的管理变得更加简单。

4. 微服务支持:Spring Boot 提供了对微服务架构的良好支持,可以轻松构建和部署微服务应用程序。

使用 Spring Boot 可以通过以下步骤:

1. 创建一个 Spring Boot 项目:你可以使用 Spring Initializr(https://start.spring.io/)来创建一个新的 Spring Boot 项目,选择所需的依赖和项目设置。

2. 编写应用程序代码:根据你的需求编写应用程序的业务逻辑和控制器,可以使用 Spring Boot 提供的自动配置功能,简化项目的配置。

3. 运行应用程序:使用 Maven 或 Gradle 构建你的项目,并运行生成的可执行 JAR 文件或 WAR 文件。

4. 部署应用程序:将生成的可执行文件部署到服务器上,Spring Boot 内置了常用的 Web 容器,可以直接运行应用程序。

总之,Spring Boot 是一个用于简化 Spring 应用程序开发和部署的工具,它提供了许多便利的功能和特性,使得开发者可以更加高效地构建和管理 Spring 应用程序。

Web 是什么?web项目是什么?web容器是什么?

"Web" 是指"World Wide Web"(万维网)的简称,它是由许多互联网服务器组成的一个庞大的信息系统。Web 通过使用超文本传输协议(HTTP)来传输数据,并使用统一资源定位符(URL)来定位资源,如网页、图片、视频等。Web 也使用超文本标记语言(HTML)等技术来创建和展示内容。

Web 项目是指基于 Web 技术开发的应用程序或服务。这些项目通常是通过 Web 浏览器进行访问和交互的,可以提供各种功能,如信息展示、数据交互、在线购物、社交网络等。Web 项目通常由前端页面、后端服务器和数据库等组成,以实现用户与系统的交互和数据处理。

Web 容器是一个用于运行 Web 应用程序的服务器环境。它负责管理 Web 应用程序的生命周期,处理 HTTP 请求和响应,以及提供运行环境和支持。Web 容器还负责与 Web 服务器(如 Apache、Nginx 等)通信,将请求转发给适当的 Web 应用程序,并将处理后的响应返回给客户端。

常见的 Web 容器包括 Tomcat、Jetty、Undertow 等。这些容器提供了一个运行 Java Servlet、JavaServer Pages(JSP)和其他 Java Web 技术的环境。除了 Java 的 Web 容器之外,还有许多其他语言和框架的 Web 容器,比如 Node.js 的 Express 框架、Python 的 Django 框架等。

总的来说,Web 项目是通过 Web 技术开发的应用程序,而 Web 容器则是用于运行和管理这些 Web 项目的服务器环境。它们共同构成了 Web 应用程序的运行和交互环境。

二.Spring Boot

内容包括Json数据封装、日志记录、属性配置、MVC支持、在线文档、模板引擎、异常处理、AOP 处理、持久层集成等等。内容包括拦截器、监听器、缓存、安全认证、分词插件、消息队列等等。

  • FastJson

  • Swagger2
  • Thymeleaf
  • MyBatis
  • Redis
  • ActiveMQ
  • Shiro
  • Lucence

1.Spring Boot开发环境搭建和项目启动

要搭建 Spring Boot 的开发环境并启动一个项目,你可以按照以下步骤进行:

1. 确保你的开发环境中已经安装了 Java 开发工具包(JDK)。你可以从 Oracle 官网或者 OpenJDK 官网下载并安装适合你操作系统的 JDK 版本。

2. 选择一个集成开发环境(IDE)来编写和管理你的 Spring Boot 项目。常见的选择包括 IntelliJ IDEA、Eclipse 和 VS Code。确保你已经安装了你选择的 IDE。

3. 创建一个新的 Spring Boot 项目。你可以使用 Spring Initializr(https://start.spring.io/)来初始化一个新项目。在 Spring Initializr 网站上,你可以选择项目的元数据、依赖和构建工具(如 Maven 或 Gradle),然后生成一个基本的 Spring Boot 项目结构。

4. 使用你的 IDE 打开新创建的项目。导入项目到你的 IDE 中,确保项目结构被正确加载。

5. 编写你的应用程序代码。在 src/main/java 目录下创建你的应用程序主类,并编写你的业务逻辑和控制器。

6. 运行你的 Spring Boot 项目。在 IDE 中,你可以直接运行你的主类(通常是一个带有 @SpringBootApplication 注解的类),或者使用 Maven 或 Gradle 命令来构建和运行你的项目。

7. 访问你的应用程序。一旦应用程序启动,你可以在浏览器中访问 http://localhost:8080(默认端口)来查看你的应用程序运行情况。

这些步骤可以帮助你在本地搭建 Spring Boot 的开发环境并启动一个简单的项目。一旦你熟悉了这些基本步骤,你可以继续学习如何配置数据库、编写 RESTful 服务、添加前端界面等更多高级的开发任务。

2.Spring Boot返回Json数据及数据封装

在 Spring Boot 中,你可以很容易地返回 JSON 数据并进行数据封装。通常情况下,你可以使用 Spring MVC 中的 @RestController 注解来标记你的控制器类,这样它就能够返回 JSON 数据了。下面是一个简单的例子,演示如何在 Spring Boot 中返回 JSON 数据并进行数据封装。

@RestController

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    String value() default "";
}

@RestController 注解包含了原来的 @Controller 和 @ResponseBody 注解,使用过 Spring 的朋友对 @Controller 注解已经非常了解了,这里不再赘述, @ResponseBody 注解是将返回的数据结构转换为 Json 格式。所以在默认情况下,使用了 @RestController 注解即可将返回的数据结构转换成 Json 格式,Spring Boot 中默认使用的 Json 解析技术框架是 jackson。我们点开 pom.xml 中的 spring-boot-starter-web 依赖。
原文链接:https://blog.csdn.net/cuiqwei/article/details/118188540

 新建一个 jackson 的配置类,想null变成“”

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
        return objectMapper;
    }
}

在这个示例中,我们创建了一个名为 JacksonConfig 的配置类,并在其中定义了一个名为 objectMapper 的 Bean 方法。在该方法中,我们创建了一个新的 ObjectMapper 实例,并进行了两项配置:

1. 我们使用 setSerializationInclusion 方法将 null 值序列化为非空字符串。

2. 我们使用 configure 方法禁止序列化器写入 null map 值,这样可以确保在序列化过程中将 null 值转换为空字符串。

通过这个配置类,我们告诉 Spring Boot 在启动时使用我们自定义的 ObjectMapper 实例,从而改变了 Jackson 序列化 null 值的默认行为。

在你的 Spring Boot 应用程序中,只需将这个配置类放在合适的包路径下,Spring Boot 就会自动扫描并应用这个配置。这样,在你的应用程序中,任何使用 Jackson 进行序列化的地方,都会遵循你在这个配置类中定义的规则,将 null 值序列化为空字符串。

 Jackson 和 FastJson

Jackson 和 FastJson 都是流行的 Java JSON 处理库,它们都提供了序列化和反序列化 JSON 数据的功能。下面是它们之间的一些对比:

性能:FastJson 在处理速度上通常比 Jackson 更快。这是因为 FastJson 设计时就专注于性能,采用了一些优化策略,包括基于 ASM 的动态字节码生成来提高性能。

灵活性:Jackson 提供了更多的配置选项和定制能力,可以更灵活地满足不同的需求。FastJson 也提供了一些配置选项,但相对来说没有那么多。

社区支持:Jackson 是一个非常成熟和广泛使用的库,在社区支持和文档方面更加丰富。FastJson 也有相当数量的用户,但在社区支持和文档方面可能略逊一筹。

jackson 和 fastJson 两者冲突吗,如何全局只使用fastjson

在一个项目中同时使用 Jackson 和 FastJson 可能会导致冲突和不一致的行为,因为它们都是用来处理 JSON 的库,它们可能会对 JSON 的序列化和反序列化产生不同的结果。因此,最好的做法是在项目中只使用其中一个库

如果你想在项目中全局只使用 FastJson,你可以按照以下步骤进行配置:

1. 移除项目中的 Jackson 相关依赖:首先,你需要将项目中所有的 Jackson 相关依赖移除,包括任何与 Spring Boot 集成的 Jackson 相关依赖。你可以在 Maven 或 Gradle 的配置文件中将这些依赖移除。

2. 添加 FastJson 依赖:在项目中添加 FastJson 的依赖,你可以使用 Maven 或 Gradle 来添加相应的依赖。

3. 配置 Spring Boot 使用 FastJson:如果你在使用 Spring Boot,你可以配置 Spring Boot 使用 FastJson 作为默认的 JSON 处理库。以下是一个示例配置:

import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        // 创建FastJson消息转换器
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig config = new FastJsonConfig();
        // 配置FastJson的行为,例如是否输出null值等
        // config.set...
        converter.setFastJsonConfig(config);
        converters.add(0, converter);
    }

备注:

@Bean和@Configuration

那么,什么时候应该使用@Bean注解呢?通常情况下,当你需要将一个特定的对象注册为Spring应用上下文中的bean时,你可以使用@Bean注解。这在很多情况下非常有用,比如创建自定义的bean、集成第三方库、或者注册一些Spring框架中没有默认注册的组件等。

总的来说,@Bean注解用于向Spring容器注册bean,而@Configuration注解用于标识一个类为配置类,告诉Spring在启动时要处理这个类中的bean定义。

3.统一异常处理

通常情况下,我们会使用统一异常处理来确保在出现异常错误时也返回统一的格式。在 Spring 框架中,可以通过 @ControllerAdvice 和 @ExceptionHandler 注解来实现统一异常处理。

以下是一个简单的示例,展示了如何使用统一异常处理来返回统一的 JSON 格式:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ResponseBody
    public ApiResponse<?> handleException(HttpServletRequest request, Exception ex) {
        Map<String, String> headers = getHeadersFromRequest(request);
        return ApiResponse.error(500, "Internal Server Error", headers);
    }

    private Map<String, String> getHeadersFromRequest(HttpServletRequest request) {
        // 从请求中获取头部信息的逻辑
        // 这里只是一个示例,实际情况可能会根据项目需求进行定制
        Map<String, Stri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值