青岛市崂山区城乡建设局网站,wap卖料建站系统,网站后台的网址忘记了,百度云服务器建设网站Spring
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器#xff08;框架#xff09; IoC#xff08;Inversion of Control#xff0c;控制反转#xff09;是一种设计思想#xff0c;它主要用于降低软件系统中不同模块之间的耦合度#xff0c;提高代码的可维护…Spring
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 IoCInversion of Control控制反转是一种设计思想它主要用于降低软件系统中不同模块之间的耦合度提高代码的可维护性和可扩展性。 一、传统开发与 IoC 开发的对比 在传统的软件设计中对象的创建和依赖关系的管理通常由对象自身负责。例如一个对象 A 需要依赖对象 B 来完成某些功能那么对象 A 就会在自己的代码中显式地创建对象 B。这样的方式会导致对象之间的耦合度较高当对象 B 的实现发生变化时可能需要修改对象 A 的代码。 而在 IoC 的设计模式下对象的创建和依赖关系的注入由一个外部的容器通常称为 IoC 容器来负责。对象只需要声明自己所需要的依赖而不需要关心这些依赖是如何创建和管理的。当对象需要使用依赖时IoC 容器会自动将依赖注入到对象中。 二、IoC 的实现方式
依赖注入Dependency InjectionDI 这是实现 IoC 的主要方式之一。依赖注入是指在对象创建的时候由 IoC 容器将对象所需要的依赖传递给它。依赖注入可以通过构造函数注入、Setter 方法注入和接口注入等方式实现。构造函数注入在对象创建时通过构造函数将依赖传递给对象。这种方式可以确保对象在创建时就拥有所需的依赖并且可以保证依赖的不可变性。Setter 方法注入在对象创建后通过 Setter 方法将依赖传递给对象。这种方式比较灵活可以在对象创建后动态地设置依赖。
AOPAspect-Oriented Programming面向切面编程是一种编程思想它通过在不修改原有业务逻辑代码的情况下对业务逻辑的各个部分进行增强或补充从而实现横切关注点的分离。 一、AOP 的核心概念
切面Aspect 切面是对横切关注点的模块化封装它包含了对业务逻辑的增强或补充的代码。例如日志记录、事务管理、安全检查等都可以作为切面。连接点Join Point 连接点是程序执行过程中的一个特定点例如方法调用、方法执行、异常抛出等。在 AOP 中连接点是切面可以插入的地方。切入点Pointcut 切入点是对连接点的筛选条件它定义了哪些连接点可以被切面增强。通过定义切入点可以精确地控制切面的作用范围。通知Advice 通知是在切入点处执行的代码它可以在连接点之前、之后或周围执行。通知分为前置通知Before Advice、后置通知After Advice、环绕通知Around Advice等类型。
SpringBoot
SpringBoot是为了简化Spring开发的框架具体体现就是说Spring创建一个代码需要配置对应的Bean和MVCxml文件但是SpringBoot无需配置主要的一个特点就是约定大于配置就我们上面说的Spring需要配置一些信息但是SpringBoot就不需要
自动配置 Spring Boot 在启动时会自动扫描类路径下的依赖和配置并根据这些信息进行自动配置。自动配置的原理自动配置主要是归功于SpringBootApplication这个注解由SpringBootConfiguration EnableAutoConfiguration ComponentScan 这三个注解组成的其中 EnableAutoConfiguration 是实现自动化配置的核心注解。该注解主要是通过 Import 注解导入对应的配置选择器。关键是内部读取该项目和 该项目引入的Jar包 里的classpath路径下的** META-INF/spring.factories **文件中的所配置类的全类名。这些配置类中所定义的Bean还会根据对应的条件注解 CoditionalOnClass 这个注解判断是否有对应的class文件如果有则加载该类把这个配置类的所有的Bean放入spring容器中使用。 约定大于配置 SpringBoot是为了简化Spring开发的框架具体体现就是说Spring创建一个代码需要配置对应的Bean和MVCxml文件但是SpringBoot无需配置主要的一个特点就是约定大于配置就我们上面说的Spring需要配置一些信息但是SpringBoot就不需要 代码示例 SpringBoot实现
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;SpringBootApplication
RestController
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}GetMapping(/hello)public String hello() {return Hello, Spring Boot!;}
}Spring代码实现
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;Controller
public class HelloWorldController {RequestMapping(/hello)ResponseBodypublic String hello() {return Hello, Spring!;}public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(applicationContext.xml);}
}同时你需要创建一个名为 applicationContext.xml 的配置文件内容如下
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdcontext:component-scan base-package你的包名/mvc:annotation-driven/
/beansSpringCloud
Spring Cloud 是一个基于 Spring Boot 的微服务开发框架它提供了一系列工具和组件帮助开发人员快速构建分布式系统。
一、主要特点 服务治理 Spring Cloud 提供了服务注册与发现机制如 Eureka、Consul 等。服务提供者可以将自己注册到服务注册中心服务消费者可以从注册中心获取服务提供者的地址信息从而实现服务的动态发现和调用。例如在一个微服务架构中有多个服务实例同时运行。当一个服务实例出现故障时服务注册中心可以及时感知到并将该实例从可用服务列表中移除避免服务消费者调用到故障实例。 负载均衡 Spring Cloud 集成了 Ribbon 等负载均衡组件可以实现服务消费者对服务提供者的负载均衡调用。负载均衡可以提高系统的可用性和性能避免单个服务实例过载。例如当有多个服务提供者实例时Ribbon 可以根据一定的策略如轮询、随机等将请求分发到不同的实例上实现负载均衡。 断路器 Spring Cloud 引入了 Hystrix 等断路器组件用于防止服务故障的连锁反应。当某个服务出现故障时断路器可以快速切断对该服务的调用避免故障扩散同时可以提供降级策略返回备用的响应结果。例如在一个电商系统中如果订单服务出现故障断路器可以切断对订单服务的调用并返回一个提示信息如“系统繁忙请稍后再试”而不是让故障扩散到整个系统。 配置管理 Spring Cloud Config 提供了集中式的配置管理服务可以实现对微服务应用的配置集中管理和动态更新。配置信息可以存储在 Git 仓库等外部存储中方便进行版本控制和管理。例如当需要修改某个微服务的配置参数时只需要在配置中心进行修改然后通知微服务应用进行配置更新而不需要逐个修改每个微服务的配置文件。 网关 Spring Cloud Gateway 是一个基于 Spring 5、Spring Boot 2 和 Project Reactor 的 API 网关。它可以实现请求的路由、过滤、限流等功能为微服务架构提供统一的入口和出口。例如网关可以根据请求的 URL 将请求路由到不同的微服务上同时可以对请求进行安全验证、日志记录、限流等操作提高系统的安全性和性能。
二、应用场景 微服务架构 Spring Cloud 非常适合用于构建微服务架构的应用系统。它可以帮助开发人员快速搭建微服务架构的各个组件如服务注册与发现、负载均衡、断路器、配置管理等提高开发效率和系统的可维护性。例如在一个大型的电商系统中可以将订单服务、商品服务、用户服务等拆分成多个微服务每个微服务都可以独立部署和扩展通过 Spring Cloud 实现服务之间的通信和协作。 分布式系统 Spring Cloud 提供了一系列工具和组件用于构建分布式系统。它可以帮助开发人员解决分布式系统中的各种问题如服务治理、负载均衡、故障处理、配置管理等提高系统的可用性和性能。例如在一个分布式的日志分析系统中可以使用 Spring Cloud 实现日志采集服务、日志存储服务、日志分析服务等多个微服务之间的通信和协作提高系统的可扩展性和可维护性。 云原生应用 Spring Cloud 与云原生技术如容器化、DevOps、持续交付等紧密结合可以帮助开发人员快速构建云原生应用。它可以在容器化环境中运行支持自动化部署和扩缩容提高应用的弹性和可扩展性。例如在一个基于 Kubernetes 的云原生应用中可以使用 Spring Cloud 实现服务注册与发现、负载均衡、断路器等功能同时可以利用 Kubernetes 的自动化部署和扩缩容功能提高应用的可用性和性能。