目录
-
SpringBoot
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用Spring 的难度, 简省了繁重的配置,提供了各种启动器,使开发者能快速上手。
常用的Spring Boot核心注解:
@SpringBootApplication: 这是一个组合注解,用于标记Spring Boot应用的主类。它包含了
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
三个注解,用于指定配置类、启用自动配置和组件扫描。@Configuration: 用于标记一个类为配置类,其中定义的bean可以通过Spring容器进行管理。配置类通常包含
@Bean
注解用于定义Bean的创建和配置。@EnableAutoConfiguration: 用于启用Spring Boot的自动配置机制。通过该注解,Spring Boot会根据项目的依赖和配置,自动添加和配置各种功能模块,简化了应用的配置过程。
@ComponentScan: 用于指定Spring扫描组件的基础包路径。它会自动扫描并注册带有
@Component
、@Service
、@Repository
等注解的类作为Spring的组件。@RestController: 用于标记一个类为RESTful风格的控制器。该注解结合了
@Controller
和@ResponseBody
两个注解,使得类中的方法可以直接返回JSON或XML等数据格式。@RequestMapping: 用于映射HTTP请求路径到控制器的方法。可以用于类级别和方法级别,指定处理请求的URL路径。
@Autowired: 用于自动注入依赖对象。通过该注解,Spring会自动查找匹配类型的Bean,并将其注入到目标对象中。
@Value: 用于从配置文件中读取属性值,并将其注入到标记的字段或方法参数中。
@ConfigurationProperties: 用于将配置文件中的属性值映射到标记的类或字段上。可以通过该注解方便地获取和配置应用程序的属性。
@Conditional: 用于根据条件决定是否启用某个配置或组件。可以与
@ConditionalOnProperty
、@ConditionalOnClass
等注解结合使用,实现条件化的配置和装配。
SpringBoot Starter的工作原理
自动配置(Auto-configuration):每个Spring Boot Starter都包含一个自动配置模块,其中定义了一组默认的配置和Bean定义。这些自动配置通过条件化的方式,根据应用程序的类路径和配置属性来自动启用或禁用。自动配置使用了Spring Boot的条件注解(例如
@ConditionalOnClass
、@ConditionalOnProperty
等)来根据条件决定是否生效。依赖管理(Dependency Management):Spring Boot Starter还通过提供一个BOM(Bill of Materials)文件来管理依赖项的版本。该BOM文件中列出了与Starter相关的所有依赖项及其版本号。这样,当引入某个Starter时,可以依赖于该BOM文件,使得所有相关的依赖项都能被正确地管理和协调。
自动装配(Auto-wiring):在引入Spring Boot Starter后,应用程序可以自动获得该Starter所提供的配置和功能。Spring Boot会根据自动配置模块中的规则,自动创建和配置相关的Bean。这样,开发者无需手动编写大量的配置代码,即可快速启用和使用各种功能。
可定制性(Customizability):Spring Boot Starter提供了一些可配置的属性,可以通过应用程序的配置文件或命令行参数进行自定义。这使得开发者可以根据实际需求对Starter的行为进行调整和定制,以满足特定的业务需求。
优点:
容易上手,提升开发效率,为 Spring 开发提供一个更快、更简单的开发框架;开箱即用,远离繁琐的配置。
小结:
使编码变简单、配置变简单、部署变简单、监控变简单等等
-
Spring
Spring是一个开源的Java应用程序开发框架,提供了一种全面的编程和配置模型,用于构建企业级应用程序和服务。它提供了许多功能和特性,包括依赖注入、面向切面编程、声明式事务管理、MVC框架等
核心特性
依赖注入(Dependency Injection):Spring通过依赖注入的方式管理对象之间的依赖关系,解耦了组件之间的关系,提高了代码的可测试性和可维护性。
面向切面编程(Aspect-Oriented Programming):Spring支持面向切面编程,可以将通用的横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来,提供了更好的代码模块化和可重用性。
声明式事务管理(Declarative Transaction Management):Spring提供了声明式事务管理的机制,可以通过注解或XML配置来定义事务的边界和属性,简化了事务管理的代码。
MVC框架(Model-View-Controller):Spring提供了一个灵活的MVC框架,用于构建Web应用程序。它支持基于注解的请求映射、视图解析、数据绑定、验证等功能,简化了Web开发的过程。
数据访问与集成(Data Access and Integration):Spring提供了对各种数据访问技术的支持,包括JDBC、ORM框架(如Hibernate、MyBatis)、NoSQL数据库等。它还提供了对消息队列、缓存、搜索引擎等的集成支持。
测试支持(Testing Support):Spring框架提供了各种测试支持,包括单元测试、集成测试和端到端测试。它提供了模拟对象、容器加载和事务管理等功能,方便进行测试驱动开发和自动化测试。
企业级功能(Enterprise Features):Spring提供了许多企业级功能,如远程调用、安全性、任务调度、邮件发送等。它简化了这些常见的企业级开发任务,并提供了一致的编程模型。
小结
统一管理项目中的各种资源(bean), 在web开发的各层中都会用到。
-
SpringMVC
Spring MVC(Model-View-Controller)是Spring框架的一部分,它是一个基于Java的Web应用程序开发框架。Spring MVC提供了一种基于MVC设计模式的方式来构建灵活、可扩展和高效的Web应用程序。
核心组件
Model(模型): 模型表示应用程序中的数据和业务逻辑。它可以是一个POJO(Plain Old Java Object)或一个持久化实体对象。模型对象存储和管理数据,供视图和控制器使用。
View(视图): 视图负责渲染模型数据,并将其呈现给用户。它可以是一个JSP页面、Thymeleaf模板、HTML文件或其他视图技术。视图负责将模型数据转换为用户可以理解的格式。
Controller(控制器): 控制器接收来自用户的请求,并根据请求的内容和参数来处理请求。它负责决定使用哪个模型和视图,并将模型数据传递给视图进行渲染。控制器还可以处理表单数据验证、调用业务逻辑等任务。
工作流程
- 客户端发送一个HTTP请求到Spring MVC应用程序。
- 前端控制器(DispatcherServlet)接收到请求,并将其分发给相应的处理器映射器(Handler Mapping)。
- 处理器映射器根据请求的URL路径和其他条件,将请求映射到合适的处理器(Controller)。
- 处理器执行业务逻辑,可能涉及到数据访问、验证等操作。它可以返回模型数据和视图名称。
- 视图解析器(View Resolver)根据视图名称解析出实际的视图对象。
- 视图对象将模型数据进行渲染,生成最终的响应内容。
- 响应内容返回给前端控制器,最终发送给客户端。
小结
SpringMVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,可以无缝集成。
-
SpringSession
Spring Session是Spring框架提供的一个模块,用于管理和支持在分布式环境下的会话管理。它提供了一种方式来处理会话数据的存储和共享,使得应用程序可以无缝地在多个服务器之间共享会话信息。
传统的Servlet会话(HttpSession)是存储在单个服务器上的,当应用程序运行在多个服务器集群中时,会话数据无法跨服务器共享,这可能导致一些问题,如用户在一个服务器上登录后,在另一个服务器上被认为是未登录状态。
Spring Session通过将会话数据从单个服务器中移出,存储到外部存储介质(如数据库、Redis等)中,从而实现会话的共享和跨服务器访问。
会话存储的方式
数据库存储:将会话数据存储在关系型数据库中,如MySQL、PostgreSQL等。Spring Session提供了对JDBC和JPA的支持。
Redis存储:将会话数据存储在Redis内存数据库中。Redis是一个高性能的键值存储系统,它提供了快速的读写操作和数据持久化能力。
MongoDB存储:将会话数据存储在MongoDB文档数据库中。MongoDB是一个面向文档的NoSQL数据库,适合存储非结构化数据。
Hazelcast存储:将会话数据存储在Hazelcast内存数据网格中。Hazelcast是一个开源的分布式计算平台,提供了分布式数据结构和集群管理功能。
小结
主要解决在集群环境下的Session共享问题。
-
lombok
Lombok是一个Java库,它通过注解自动化生成Java类的样板代码,减少了开发人员编写重复代码的工作量。它提供了一组注解,用于自动生成Java类中的常见方法、构造函数、属性访问器等。
lombok主要特性和功能:
自动生成Getter和Setter:通过在类上添加
@Getter
和@Setter
注解,Lombok会自动为类中的属性生成对应的getter和setter方法。自动生成构造函数:通过在类上添加
@NoArgsConstructor
、@AllArgsConstructor
和@RequiredArgsConstructor
注解,Lombok会自动为类生成无参构造函数、全参构造函数和带有必需参数的构造函数。自动生成toString方法:通过在类上添加
@ToString
注解,Lombok会自动为类生成toString方法,方便对象的打印输出。自动生成equals和hashCode方法:通过在类上添加
@EqualsAndHashCode
注解,Lombok会自动为类生成equals和hashCode方法,简化对象的比较和哈希计算。自动生成日志记录:通过在类上添加
@Slf4j
、@Log
或其他日志相关的注解,Lombok会自动为类生成日志记录器,方便进行日志输出。自动生成Builder模式:通过在类上添加
@Builder
注解,Lombok会自动生成Builder模式的代码,简化对象的创建过程。自动生成异常处理:通过在方法上添加
@SneakyThrows
注解,Lombok会自动处理受检异常的抛出,减少异常处理的样板代码。
小结:
lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的java bean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法。
-
Swagger
Swagger是一个开源的、用于设计、构建、文档化和使用RESTful风格的Web服务的工具集。它提供了一套工具和规范,帮助开发人员在设计API时更加简单和高效。
核心组件
Swagger Editor: Swagger提供了一个基于Web的编辑器,开发人员可以使用它来编写和调试API的规范。编辑器支持实时预览和验证规范的正确性。
Swagger UI: Swagger UI是一个用于生成漂亮、交互式API文档的工具。它可以自动生成API文档,并提供一个用户友好的界面,用于浏览和测试API的各种终端点。
Swagger Codegen: Swagger Codegen是一个代码生成工具,它可以根据API规范自动生成客户端代码和服务端框架的样板代码。开发人员可以选择多种编程语言和框架来生成代码。
主要特性
API规范定义: Swagger使用OpenAPI规范(以前称为Swagger规范)来描述API的结构、终端点、参数、响应等信息。这个规范是一个可扩展的、机器可读的文档,可以作为API的合同和参考。
自动生成API文档: Swagger可以根据API规范自动生成详细的API文档,包括终端点的描述、参数说明、响应示例等。这样的文档可以帮助开发人员和其他团队成员更好地理解和使用API。
交互式API测试: Swagger UI提供了一个交互式的界面,可以直接在浏览器中测试API的各种终端点。它支持自动生成请求参数表单和响应结果的展示,方便进行API的调试和验证。
代码生成: Swagger Codegen可以根据API规范自动生成客户端代码和服务端框架的样板代码。这样,开发人员可以快速生成与API交互的代码,减少手动编写的工作量。
集成支持: Swagger可以与各种开发工具和框架集成,如Spring Boot、Node.js、Express等。它提供了一些库和插件,使得在这些环境中使用Swagger更加便捷。
小结
标签:Spring,生成,瑞吉,API,自动,外卖,注解,Swagger,应用层 From: https://blog.csdn.net/xiao_huo_hua_/article/details/139535949可以自动的帮助开发人员生成接口文档,并对接口进行测试。