如何开始使用 Spring 框架
“Spring 框架是什么?”你不禁会问。随着第六个主要版本的发布,许多工程师已经接受了它。一些个人和企业家的整个职业生涯和业务都建立在它的社区中。
但如果您是今天开始使用 Spring 的10,000 名幸运儿之一,那么您将大饱眼福。在本文中,我们将探讨为何以及如何开始使用 Spring,并深入了解其最新和最有用的功能。
Spring 的力量
在软件开发领域,框架在简化复杂任务、提高生产力和提高应用程序整体质量方面发挥着关键作用。Spring Framework(通常称为 Spring)是 Java 框架的黄金标准,赢得了全球开发人员的青睐。随着最新版本 Spring Framework 6.0 的发布,新手的旅程变得更加诱人,承诺带来充满简单、灵活和创新的愉快体验。
拥抱 Spring 哲学
首先,让我们花点时间了解一下 Spring 到底是什么。从本质上讲,Spring 是一个用于构建强大且可扩展的 Java 应用程序的开源框架。它不仅提供了一组工具和库,还体现了一种鼓励最佳实践、模块化和可测试性的综合理念。
Spring 旨在通过抽象与企业应用程序开发相关的许多复杂性来简化开发过程。它鼓励使用控制反转 (IoC) 和依赖注入等编程范例,这有助于管理对象依赖关系并提高代码的可维护性。
让我们看一个体现这一理念的核心例子。以一个典型的、未经 Spring 增强的类为例:
```java
class OrderController {
final OrderRepository orders = new JdbcOrderRepository();
Order findOrder(String id) { … }
}
```
由于该类内联了对“JdbcOrderRepository”的依赖,因此它不能很好地适应变化。
请像这样组织你的课程:
```java
class OrderController {
final OrderRepository orders;
OrderController(OrderRepository orders) {
this.orders = orders;
}
Order findOrder(String id) { … }
```
然后您将允许 Spring 为您构建“OrderService”并代表您注入依赖项。现在此类仅依赖于“OrderRepository”接口,而不是特定的实现。
Spring 旨在让您轻松做出正确的架构和设计决策,而鼓励依赖注入只是其中之一。不过,正如您所见,只有“以 Spring 的方式”才能获得全部好处。
探寻春天的风景
Spring 的发展历程并未止步于控制反转和面向方面编程 (AOP) 等设计模式。它已发展成为一个强大的框架,可促进各种架构范例,同时帮助您专注于工程核心能力和业务逻辑。
Spring 通常用于实现微服务、无服务器、实时流和云就绪等范例。让我们仔细看看其中之一:构建微服务架构。
您可以使用 Spring Web MVC 来建模 RESTful 端点;使用 Spring Data JDBC 来建模底层资源;使用 Spring Security 来使用 JWT 保护微服务。您还可以使用 Spring buildpacks 将每个微服务 docker 化,以便轻松进行 Kubernetes 部署,并将其转变为原生应用程序,实现毫秒级启动。
建筑范式
例如,考虑下面列出的完整的 Spring RESTful 应用程序:
```java
@RestController
class OrderController {
OrderRepository orders;
OrderController(OrderRepository orders) {
this.orders = orders;
}
@GetMapping("/order/{id}")
ResponseEntity<Order> findOrder(@PathVariable("id") String id) {
return orders.findById(id).map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
}
record Order(@Id String id, String username) {}
@Repository
interface OrderRepository extends CrudRepository<Order, String> {}
@SpringBootApplication
public class SimpleApplication {
@Bean
UserDetailsService users() {
return new InMemoryUserDetailsManager(User.withUsername(“user”)
.password(“{noop}password”).authorities(“order:read”).build());
}
public static void main(String[] args) {
SpringApplication.run(SimpleApplication.class, args);
}
}
```
上述应用程序具有以下高级特征:
部署侦听端口 8080 的 HTTP 微服务
以标准 JSON 格式响应http://localhost:8080/order/123等请求
使用 HTTP Basic 保护每个请求
连接到订单数据库(默认在内存中)并为每个请求制定适当的 SQL 查询
对于不到 40 行的代码来说还不错。
核心竞争力和商业逻辑
它可以完成所有这些工作,同时帮助您专注于代码的业务逻辑。
看看 Spring Security,我最喜欢的 Spring 模块。你看到了上述应用程序中安全性是如何自动实现的吗?但假设你的需求更加复杂,你需要只有具有 order:read 权限的用户才能调用该订单端点。
改变这个:
```java
@SpringBootApplication
@EnableMethodSecurity
public class SimpleApplication {
…
}
```
还有这个:
```java
@GetMapping
@PreAuthorize(“hasAuthority(‘order:read’)”)
Order findOrder(@PathParam(“id”) String id) { … }
```
现在只有具有该权限的用户才能调用该端点。
Spring 的声明式模型使您能够专注于希望代码执行的操作,而让 Spring 决定如何执行该操作。
踏上你的春季之旅
考虑到春季旅程的规模和影响,踏上旅程可能看起来令人望而生畏。
首先访问 start.spring.io,这是一个声明应用程序模块和依赖项的平台,可为您指明正确的道路。
使用它来构建一个简单的 REST API。如果您想使用上面的 OrderController 代码片段,请选择 Spring MVC、Spring Security、Spring Data JPA 和 H2 作为所需的模块。然后使用该代码片段作为您的主类。
利用 Spring Guides、Spring Academy、Baeldung 或 Pluralsight Skills 等学习平台来学习和掌握 Spring 的复杂性。每种平台都提供独特的方法 - 结构化学习或自由形式的探索 - 根据您的喜好量身定制。
加入 Spring 社区。Spring 团队会密切关注 StackOverflow 和 GitHub 等平台,随时准备为您解答问题和解决错误。您还可以参加一年一度的 SpringOne 会议,在那里您可以与其他爱好者和 Spring 团队互动,从而帮助您掌握 Spring 专业知识。
使用 Spring 进行前沿编码
但是 Spring 能让您保持领先地位吗?不用担心,Spring 正在紧跟创新步伐。Spring Framework 6.0 通过一系列尖端功能展示了其灵活性:
1. Java 17 支持
Spring Framework 6.0 与 Java 生态系统的最新进展完全一致。此版本包含 Java 17,允许开发人员利用期待已久的语言功能(例如记录和模式匹配)以及性能增强功能(例如改进的垃圾收集)。
2. Kotlin 兼容性
Kotlin 是一种流行的 JVM 编程语言,它与 Spring Framework 6.0 的兼容性得到增强。开发人员现在可以利用 Kotlin 简洁而富有表现力的语法,同时无缝集成到 Spring 组件中。
3.可观察性和指标
在 6.0 版本中,每个模块都新增了跟踪、指标和日志。这使您能够集中精力解决性能问题、了解请求流程并更快地分析和响应事件。这些都将有效缩短您的平均解决时间。
4. 原生支持
现在,您可以轻松地将应用程序从需要安装 JDK 的 .jar 移至在其操作系统上本地运行的应用程序。这样可以实现闪电般的启动速度,并显著减少内存和文件系统占用空间,从而降低运营开销并提高客户满意度。
您可以在我的文章《2023 年 Java 的热门趋势》中阅读有关 GraalVM(可编译为本机应用程序的 JDK)的更多信息。
Spring 的活力依然坚定,推动您的编码工作迈向前所未有的高度。
结论
在本文中,我们开始了解 Spring,这是一个以构建可扩展、模块化应用程序而闻名的 Java 框架。学习 Spring 习语可以让你编写出性能、寿命和可读性都出众的代码。Spring 的演进还远未结束;它最近的更新与最新的 Java 版本保持一致,并引入了对 Kotlin、可观察性和本机编译的增强支持。
如何开启你的春季冒险
Pluralsight 还提供各种 Java 和 Spring 相关课程(包括一些由我本人编写的课程),以满足您的技能水平。您可以注册10 天免费试用,无需承诺。
如果您想开始使用 Spring,最好的起点是Spring 框架:核心 Spring 学习路径。有适合初学者、中级和高级 Spring 用户的课程 — 只需选择适合您的起点即可。如果您不确定自己处于哪个阶段,该页面有一个技能评估,您可以使用它来推荐您应该从哪里开始。
如果您对保护 Spring Data REST API 感兴趣,我有一个专门的课程供您查看,以及以下有关 Java 的课程:
成为 Spring 专家的道路正在等待您——今天就迈出第一步!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~