欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 专题一: Spring生态初探

专题一: Spring生态初探

2024/11/30 10:36:44 来源:https://blog.csdn.net/weixin_40735063/article/details/140085853  浏览:    关键词:专题一: Spring生态初探

咱们先从整体脉络上看下Spring有哪些模块,重要的概念有个直观印象。 从Spring框架的整体架构和组成对整体框架有个认知。

 Spring框架基础概念

 Spring基础 - Spring和Spring框架组成
上图是从官网4.2.x获取的原图,目前我们使用最广法的版本应该都是5.x,5版本移除了Web模块中的Portlet子模块,新增了WebFlux模块,同时新增了公共的JCl日志管理模块。
我们JVM专题模块,通过一张图大概了解Java是如何运行的,如何通过将我们编写的Java代码编译成JVM可以认识的字节码的如何实现跨平台运行的。
同样Spring咱们也来瞅瞅Spring是将我们编写的Xml、注解或者其他配置文件编程Spring可以管理的Bean的?

在正式进入Spring专题之前,咱们先熟悉一下相关概念
Spring框架是一个开源的Java平台,它提供了全面的基础设施支持,以便您可以更容易地开发Java应用程序。Spring处理了基础设施,这样您就可以专注于您的应用程序。以下是对Spring框架整体架构和组成的概述:

控制反转(IoC)和依赖注入(DI)

Spring 框架的核心是其控制反转(IoC)容器,该容器管理应用程序对象(称为 bean)的创建、配置和生命周期。依赖注入(DI)是一种实现 IoC 的设计模式,容器在运行时注入对象的依赖关系,减少组件之间的耦合,增强模块化。

Bean 配置

Spring 中的 Bean 可以使用 XML、注解或基于 Java 的配置进行配置。

下面是Xml模式:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="jmUser" class="org.springframework.dto.JmUser"><property name="name" value="测试一" /><property name="age" value="18" /></bean></beans>

以下是使用注解的示例: 

@Configuration
public class AppConfig {@Beanpublic MyService myService() {return new MyServiceImpl();}
}

面向切面编程(AOP)

Spring 的 AOP 框架允许模块化处理日志记录、安全性和事务管理等关注点。切面使得横切关注点与主要业务逻辑分离。

定义切面

切面可以使用注解或 XML 定义。以下是使用注解的示例:


@Aspect
@Component
public class LoggingAspect {@Before("execution(* com.example.service.*.*(..))")public void logBefore(JoinPoint joinPoint) {System.out.println("Method Called: " + joinPoint.getSignature().getName());}
}

Spring 模块

Spring MVC

Spring MVC 是一个用于构建 Web 应用程序的框架。它遵循模型-视图-控制器(MVC)设计模式,促进关注点的清晰分离。

控制器

Spring MVC 中的控制器负责处理用户请求并返回适当的响应。


@Controller
public class HomeController {@GetMapping("/")public String home(Model model) {model.addAttribute("message", "Welcome to Spring MVC");return "home";}
}
视图

Spring MVC 中的视图可以使用 JSP、Thymeleaf 或 FreeMarker 等技术实现。以下是使用 Thymeleaf 的示例:


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>Home</title>
</head>
<body><h1 th:text="${message}">Welcome</h1>
</body>
</html>

Spring Data

Spring Data 简化了数据访问,提供了一致的编程模型来访问不同的数据存储。它包括用于关系数据库(Spring Data JPA)、NoSQL 数据库(Spring Data MongoDB)等的模块。

Spring Data 仓库抽象了数据访问层,减少了样板代码。以下是一个 JPA 仓库的示例:


public interface UserRepository extends JpaRepository<User, Long> {List<User> findByLastName(String lastName);
}

Spring Security

Spring Security 是一个功能强大且可定制的认证和访问控制框架。它为 Java 应用程序提供全面的安全服务。

安全配置

Spring 中的安全配置可以使用基于 Java 的配置进行定义:


@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN").antMatchers("/**").permitAll().and().formLogin();}
}

Spring Boot

Spring Boot 通过提供约定优于配置和嵌入式服务器来简化 Spring 应用程序的开发。

创建 Spring Boot 应用程序

一个典型的 Spring Boot 应用程序可以用最少的配置创建:


@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

Spring Cloud

Spring Cloud 提供构建分布式系统的工具,包括服务发现、断路器和配置管理。

Spring Cloud 通过其工具套件促进微服务的开发。以下是使用 Eureka 的服务注册示例:


@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

1. 客户端

  • IoT、Mobile、Browser:这些是访问微服务系统的不同客户端设备。它们通过 API Gateway 来访问系统中的微服务。

2. API Gateway

  • API Gateway:API 网关是客户端与微服务之间的唯一入口。它负责请求路由、安全认证、负载均衡、监控和流量管理等功能。通过 API 网关,客户端可以统一地访问不同的微服务,而不需要直接与每个微服务进行交互。

3. 微服务

  • Microservices:微服务是系统的核心业务逻辑,每个微服务都是一个独立的功能模块,负责特定的业务功能。微服务之间通过轻量级的通信协议(如 HTTP 或消息队列)进行交互。

4. 服务注册与发现

  • Service Registry:服务注册中心用于管理微服务的注册和发现。每个微服务启动时,会将自己的地址和端口注册到服务注册中心。其他微服务通过查询服务注册中心来找到需要调用的微服务地址。常用的服务注册中心有 Eureka、Consul、Zookeeper 等。

5. 配置管理

  • Config Server:配置服务器用于集中管理微服务的配置文件。微服务启动时会从配置服务器获取配置,这样可以确保所有微服务使用一致的配置,并且可以在不重启微服务的情况下动态更新配置。

6. 分布式跟踪

  • Distributed Tracing:分布式追踪系统用于监控和分析微服务之间的调用链路,帮助开发和运维人员追踪请求的流转路径,识别性能瓶颈和故障点。常用的分布式追踪系统有 Zipkin、Jaeger 等。

小结

这张图展示了一个典型的基于 Spring Cloud 的微服务架构,包括了 API 网关、服务注册中心、配置服务器、分布式追踪和微服务模块。客户端通过 API 网关与系统交互,API 网关负责请求路由和安全管理;微服务通过服务注册中心实现动态的服务发现和调用;配置服务器集中管理微服务的配置;分布式追踪系统帮助监控和分析微服务的调用链路。

这种架构设计使得系统具有良好的扩展性和灵活性,能够支持大规模的分布式应用,并且易于管理和维护。

高级主题

事务管理

Spring 的事务管理框架抽象了事务管理的复杂性,允许声明式事务管理。


@Service
public class TransactionalService {@Transactionalpublic void performTransaction() {// 业务逻辑}
}

使用 Spring 的消息传递

Spring Integration 和 Spring AMQP 提供了对消息传递的支持,使得开发消息驱动的应用程序成为可能。

Spring Integration 示例

@MessagingGateway
public interface MyGateway {@Gateway(requestChannel = "inputChannel")void sendToChannel(String data);
}@Configuration
public class IntegrationConfig {@Beanpublic IntegrationFlow integrationFlow() {return IntegrationFlows.from("inputChannel").handle(System.out::println).get();}
}

总结

Spring 框架是企业级 Java 开发的一个多功能且全面的框架。通过理解其核心概念和模块,开发人员可以利用其强大的功能构建健壮、可扩展且易维护的应用程序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com