基本概念
大约 3 分钟
Spring 介绍
Spring
主要通过依赖注入DI
和面向切面编程AOP
来实现解耦和增强模块化,从而简化企业级应用开发。它旨在全面简化Java EE
开发过程,提供了一种更好的替代方案来构建可扩展的企业级应用。
企业中开发一般使用SSH
(Struts2
+Spring
+Hibernate
)和SSM
(SpringMVC
+Spring
+MyBatis
)
Spring
优点如下:
- 核心容器:提供依赖注入功能,管理应用中的各个组件。
- 数据访问/集成:简化数据库操作,整合了
JDBC
和ORM
框架。 3.Web
框架:Spring MVC
提供了一个富有表现力的模型-视图-控制器MVC
实现,用于构建Web
应用。 - 事务管理:统一的
API
来管理事务行为,降低直接使用分布式事务的复杂性。 - 模块化和测试:提供了一整套测试模块,用于方便地测试
Spring
组件。
Spring Boot 介绍
Spring Boot
的设计目的是尽量减少配置文件的使用,简化新Spring
应用的初始搭建以及开发过程。
Spring Boot
优点如下:
- 自动配置:自动配置
Spring
应用程序的许多常见设置,这意味着开发者可以开始编写功能而无需关心大量的样板代码和配置。 - 起步依赖:提供了一种简化的依赖解析方式,开发者只需声明 “起步依赖” 即可获得合适的库配置。
- 内嵌服务器:默认支持内嵌
Tomcat
、Jetty
或Undertow
,无需部署WAR
文件。 - 运行独立:
Spring Boot
应用只需一个Java
应用的方式运行,不需要安装Web
服务器或者EJB
容器。 - 健康检查和外部化配置:提供生产就绪的功能,如健康检查、指标和外部配置。
- 无代码生成和
XML
配置要求:不需要XML
配置文件,也无需代码生成,简化了项目的配置。
环境配置
jdk
推荐使用jdk17
及以上,
依赖
Gradle
将依赖分为
- implementation: 用于声明编译时和运行时都需要的依赖。这类依赖在编译你的项目代码时可用。它们不会被暴露给其他依赖该项目的库,这意味着它们不会成为传递性依赖(不会自动添加到依赖该库的项目中)。这有助于避免你的库的用户不必要地增加编译时依赖,可以更好地封装依赖。
- testImplementation: 用于声明仅在编译和运行测试代码时需要的依赖。这些依赖只在测试编译和执行阶段可用,不会在主应用程序的编译和运行时环境中包含。这种分离确保了测试环境的特定工具或库不会影响生产代码的性能和行为。
- runtimeOnly: 用于声明仅在运行时需要的依赖,而在编译主代码时不需要。这些依赖在编译时不可用,只在运行时添加到应用的类路径中。这对于运行时才需求的库特别有用,比如特定的数据库驱动,这些库不需要参与代码的编译过程。