Spring
文章平均质量分 88
Spring
思静鱼
大道至简,行稳致远
展开
-
Spring 实现异步流式接口
在 Spring 中实现异步流式接口通常使用 WebFlux 或 Spring MVC 的异步特性。原创 2024-11-04 14:22:24 · 74 阅读 · 0 评论 -
SpringBoot的条件装配
在实际的项目开发中,我们往往需要根据不同的环境做出不同的配置,例如:在开发环境下,我们会使用内存数据库以便快速启动服务并进行开发调试,在test环境、生产环境,会使用对应环境的数据库。如果我们的应用程序可以根据自身的环境做一些这样的适配,那么我们的程序开发无疑将更加灵活、高效。在过去的应用程序开发中,我们常常会将这些环境变量写在某个指定的配置文件中,每次服务器启动的时候,会读取服务器中指定的配置文件,从而实现根据不同的环境,应用程序能做出对应的适配。原创 2024-08-28 17:20:54 · 941 阅读 · 0 评论 -
Spring注入bean的几种方式
可以在配置类中使用 @ComponentScan 注解来自动扫描指定包下的所有 @Component,@Service,@Repository,和 @Controller 注解的Bean。在上面的配置中,Spring会自动将名为 engine 的 Engine Bean 注入到 Car Bean 中的 engine 属性,因为它们的类型匹配。在Spring中,通过XML配置文件来注入Bean的方式主要包括以下几种:构造器注入、Setter注入、接口注入和集合注入。构造器注入是通过构造函数来注入依赖的。原创 2024-08-13 15:26:53 · 1174 阅读 · 0 评论 -
Spring Boot读取配置的几种方式
Spring Boot提供了多种灵活的读取配置方式,开发者可以根据项目的具体需求和场景选择合适的方式。@Value注解和@ConfigurationProperties注解是两种常用的注入配置值的方式,分别适用于单个属性注入和批量属性绑定。@ConfigurationProperties 可以将一组相关的配置绑定到一个 POJO 类中,非常适合处理复杂的配置结构。Environment 接口提供了一种以编程方式读取配置的方法,可以在任何 Spring 管理的 Bean 中使用。原创 2024-08-09 14:19:37 · 1409 阅读 · 0 评论 -
ServletContextListener监听常用场景
在某些情况下,可以在应用启动时动态注册 Servlet 或 Filter,而不是在 web.xml 文件中进行静态注册。@Override// 动态注册 Servlet@Override// 资源清理。原创 2024-08-09 13:59:51 · 542 阅读 · 0 评论 -
Feign和OpenFeign的区别
Feign和OpenFeign都是用于在Java中进行声明式HTTP请求的工具,但它们之间存在一些关键的区别。Feign:Feign是Netflix开源的一个轻量级HTTP客户端,它提供了一种简洁的、声明式的方式来定义和调用HTTP API。Feign通过Java动态代理来创建HTTP客户端,并基于注解来生成HTTP请求。OpenFeign:OpenFeign是Feign的升级版或扩展版本,它完全兼容Feign的API,但提供了更多的功能和扩展性。原创 2024-08-07 11:11:30 · 437 阅读 · 0 评论 -
Feign第一次调用为什么会很慢
Feign第一次调用慢的问题,是由初始化开销、DNS解析延迟、负载均衡器初始化、默认超时设置等多个因素共同作用的结果。通过预初始化、缓存DNS解析结果、优化连接池配置、调整超时设置、使用异步调用、开启Feign日志和GZIP压缩等策略,我们可以有效地提高Feign首次调用的性能,从而提升整个微服务架构的响应速度和稳定性。在实际应用中,我们需要根据具体场景和需求来选择合适的优化策略,并进行充分的测试和验证,以确保优化效果达到预期。原创 2024-08-07 11:04:20 · 1002 阅读 · 0 评论 -
Spring容器启动时执行代码(数据预热)
在Java项目中,有时我们需要在应用启动时执行一些初始化代码,比如加载配置、初始化数据库连接池、预热数据等。这些操作对于应用的顺利运行至关重要。以下是一些在Java项目中实现启动时执行代码(预热数据)的常用方式:SpringBoot:CommandLineRunner和ApplicationRunner。Spring 提供了接口 InitializingBean,@PostConstruct静态代码块。原创 2024-07-26 15:01:06 · 838 阅读 · 0 评论 -
springboot详解
我们从springboot的入口方法(run)一直点进去可以看到一个164行有个叫this.prepareEnvironment的方法,这里是环境配置准备的入口,我们在这个方法的下方debugger住,我们可以看到ConfigurableEnvironment已经加载好了,在框住的红色区域内正是我们配置文件的name和对应的属性。7、需要更少的配置 因为没有 web.xml 文件。首先,约定优于配置是一种软件设计的范式,它的核心思想是减少软件开发人员对于配置项的维护,从而让开发人员更加聚焦在业务逻辑上。原创 2024-05-11 16:05:05 · 945 阅读 · 0 评论 -
Spring如何解决循环依赖和循环依赖问题解决
要普通对象和代理对象是不能同时出现在容器中的,因此当一个对象需要被代理时,就要使用代理对象覆盖掉之前的普通对象,在实际的调用过程中,是没有办法确定什么时候对象被使用,所以就要求当某个对象被调用的时候,优先判断此对象是否被代理,类似于一种回调机制的实现,因此传入lambda表达式的时候,可以通过lambda表达式来执行对象的覆盖过程,getEarlyBeanReference()单例的Bean被创建后就被存放在一级缓存中,其实就是一个Map,只要这个单例bean被创建后,以后再次获取直接从Map中获取。原创 2024-05-11 15:35:30 · 1485 阅读 · 0 评论 -
Spring AOP和IOC
Spring框架中的AOP(Aspect-Oriented Programming)和IOC(Inversion of Control)是两个核心概念,它们在Spring应用中起着重要作用。IOC是一种设计原则,它反转了传统的程序设计中对象控制的方式。在传统的程序设计中,通常由程序自身控制对象的创建和管理,而在IOC容器中,控制权被反转,即由容器来创建和管理对象。原创 2024-05-11 15:26:44 · 1054 阅读 · 1 评论 -
SpringBean详解
Spring Bean 是 Spring 框架中的核心概念之一,它表示由 Spring 容器管理的对象。Spring Bean 可以是任何 Java 类的实例,包括简单的 JavaBean、业务逻辑对象、数据访问对象、甚至是整合了第三方库或框架的对象。Bean 定义(Bean Definition):Spring Bean 通过 Bean 定义来描述。Bean 定义是一个配置元数据,它包含了创建和配置 Bean 的信息,包括 Bean 的类名、依赖关系、初始化方法、销毁方法等。原创 2024-05-10 18:04:35 · 2336 阅读 · 1 评论 -
Spring详解
Spring 是一个用于构建企业级应用程序的开源框架,它提供了丰富的功能和模块化的设计,使得开发者可以更轻松地构建可扩展、可维护的应用程序。Spring Core Container(Spring核心容器):提供了核心功能,包括依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)等。主要模块包括:○ Spring Beans:用于管理应用程序中的对象(Beans)和它们的依赖关系。原创 2024-05-10 17:42:57 · 1194 阅读 · 0 评论 -
Spring事务
声明式事务:声明式事务也有两种实现方式,基于 xml 配置文件的方式和注解方式(在类上添加@Transaction 注解)编码方式:提供编码的形式管理和维护事务编程事务:手动begin、commit/rollback操作 代码重复事务的4个特性:原子性,一致性,隔离性,持久性两种事务管理方式:声明式和编程式。我们一般采用声明式事务管理。原创 2024-05-06 17:15:36 · 790 阅读 · 0 评论 -
SpringCloud
Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Hystrix:断路器,熔断机制,发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离,避免了服务雪崩的问题,提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题,客户端容错保护,特性有服务降级、服务熔断、请求缓存、请求合并、依赖隔离。原创 2024-05-06 16:37:57 · 1691 阅读 · 0 评论 -
HttpClient、OKhttp、RestTemplate接口调用对比( Java HTTP 客户端)
HttpClient、OKhttp、RestTemplate接口调用对比HttpClient、OkHttp 和 RestTemplate 是三种常用的 Java HTTP 客户端库,它们都可以用于发送 HTTP 请求和接收 HTTP 响应,但在一些方面有所不同。下面是它们之间的一些对比:HttpClient:Apache HttpClient:○ 成熟稳定: Apache HttpClient 是 Apache 软件基金会的一个项目,经过多年的发展,已经非常成熟和稳定。○ 灵活性: 提供了丰富的原创 2024-04-11 17:29:22 · 4142 阅读 · 0 评论 -
Spring事务失效的场景有哪些
如果在使用@Transactional注解声明事务时,有时想自定义回滚异常,spring也是支持的。可以通过设置rollbackFor参数,来完成这个功能。如下:@Service但是如果在程序执行过程中,出现了sql异常,但是sql异常并不属于我们定义的BusinessException异常,所以事务也不会回滚延伸:1 嵌套事务导致多回滚了怎么办?@Service@Autowired@Service如果说对于这样的代码。原创 2024-02-27 17:49:01 · 1905 阅读 · 0 评论 -
SpringMVC工作原理
SpringMVC是一个基于MVC模式的Web框架,它是Spring Framework的一部分。SpringMVC主要用于在Java Web应用程序中实现Web层,提供了一套与平台无关的、可重用的Web组件。Spring MVC是Spring框架提供的一个实现webMVC设计模式的轻量级框架,全称是Spring Web MVC。它是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。Java Web开发者必须要掌握的技术框架。原创 2024-01-09 13:48:24 · 957 阅读 · 0 评论 -
拦截器和过滤器的区别
在action的生命周期中,拦截器可以多次被调用(因为拦截器是基于反射机制实现的,即通过加载java字节码而实现的函数的调用,所以每一次运行拦截器的时候都需要找到拦截器相关的字节码并且执行),而过滤器只需在容器初始化时被调用一次(意思是只需要调用一次,filter过滤器程序就会一直在内存中执行下去,每当碰到一次请求,服务器无需再次调用都会进行拦截,除非被主动摧毁。拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用,可以限制用户对图片,文件以及其他资源的访问。原创 2023-10-24 18:10:53 · 170 阅读 · 0 评论