Spring
文章平均质量分 93
介绍Spring
爱吃牛肉的大老虎
学无止境,既要有深度又要有广度地学习
展开
-
HTTP客户端框架之Retrofit
Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了。实现了Retrofit与框架快速整合,并且支持了诸多功能增强,极大简化开发。自定义注入OkHttpClient注解式拦截器连接池管理日志打印请求重试错误解码器全局拦截器熔断降级微服务之间的HTTP调用。原创 2024-06-09 11:22:59 · 980 阅读 · 0 评论 -
AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解
在软件开发的世界中,Java一直是企业级应用的主力军。而Spring框架,尤其是Spring Boot,以其生态系统的丰富性,为开发者提供了无与伦比的便利。现在,Spring Boot正迈向一个新的纪元——人工智-能的时代。Spring AI项目的推出,不仅标志着Spring生态的进一步扩展,也为广大Java开发者开启了一个全新的编程领域。Spring AI是从著名的Python。原创 2024-06-06 17:01:25 · 5031 阅读 · 2 评论 -
Spring事件之注解@EventListener讲解
当我们观察方法的时候,会发现这个方法它主要是在对这个缓存在搞事情。这个缓存里面放的就是在项目启动过程中已经触发过的框架自带的listener对象:调用的时候,如果能从缓存中拿到对应的listener,则直接返回。而我们Demo中的自定义listener是第一次触发,所以肯定是没有的。因此关键逻辑就在方法里面:这个方法里面的逻辑较多,只说一下这个关键的 for 循环:这个 for 循环在干啥事呢?就是循环当前所有的listener,过滤出能处理当前这个事件的listener。原创 2024-02-03 14:29:16 · 5945 阅读 · 1 评论 -
Spring,SpringMVC,SpringBoot中注解讲解
如果我们将此注解标注类,那么类中的所有方法都将获得支持跨域的能力。在Spring内置的条件控制注解不满足应用需求的时候,可以使用此注解定义自定义的控制条件,以达到自定义的要求。此注解可以让我们控制更细粒度的基于表达式的配置条件限制。在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过。注解一样,被此注解标注的类,会自动被Spring所管理。注解是一个快捷的配置注解,在被它标注的类中,可以定义一个或多个。所标注的类,在该类中,定义一个用于处理具体异常的方法,并使用。原创 2023-11-14 21:39:27 · 402 阅读 · 1 评论 -
Spring之RestClient、WebClient和HTTP Interface
文章目录1 RestClient1.1 介绍1.2 准备项目1.2.1 pom.xml1.2.2 创建全局 RestClient1.2.3 Get接收数据 retrieve1.2.4 结果转换 Bean1.2.5 Post发布数据1.2.6 Delete删除数据1.2.7 处理错误1.2.8 Exchange 方法1 RestClient1.1 介绍Spring 框架一直提供了两种不同的客户端来执行 http 请求:RestTemplate:它在 Spring 3 中被引入,提供同步的阻塞式通信。原创 2023-09-06 15:26:02 · 1895 阅读 · 0 评论 -
Spring限流之限流方案分析
自定义一个限流用的注解,后面在需要限流的方法或接口上面只需添加该注解即可;可以根据需要,添加更多的属性该类的实现思路与上述使用guava类似,不同的是,这里使用的是sentinel。原创 2023-07-06 22:29:29 · 1538 阅读 · 1 评论 -
Spring之SpEL表达式操作示例解析
Spring也有自己的EL,叫,简称SpEl。其可以在程序中单独使用,也可以在Spring应用中进行bean定义时使用。其核心是接口,Spring使用该接口来表示EL中的表达式。通过Expression接口的系列getValue()方法我们可以获取对应Expression在特定下的值,也可以通过其系列setValue()方法来设值。对应的Expression通常不是由我们直接来new对应实现类的实例,而是通过Spring提供的接口的系列方法来将一个字符串类型的表达式解析为一个Expression。原创 2023-06-15 16:01:59 · 1860 阅读 · 1 评论 -
Spring Bean生命周期之三级缓存循环依赖
循环依赖问题,如过上面的CDemo2的构造方法有一个CDemo1参数,那么循环依赖产生,应用无法启动。: B注入的半成品A对象只是一个引用,所以之后A初始化完成后,B这个注入的A就随之变成了完整的A。另外一个需要注意的点是,在构造方法中,不应有复杂耗时的逻辑,会拖慢应用的启动时间。值可能会影响注入点的优先级,但请注意,它们不会影响单例启动顺序,这是由依赖关系和。返回的是代理对象,那么注入的也应该是代理对象,我们可以看到注入的确实是经过。的类名,很可能就会忘记来改所有用到它的注解,那就问题大了。原创 2023-06-04 18:12:49 · 1143 阅读 · 1 评论 -
Spring Bean生命周期之(3)populateBean 属性填充阶段
我们这里先整体过一遍代码,后面进行每一步的详细解读。// AbstractAutowireCapableBeanFactory#populateBean // beanName : bean 的name // mbd : bean的定义信息 // bw : bean实例的包装类型,里面有bean的实例 protected void populateBean(String beanName , RootBeanDefinition mbd , @Nullable BeanWrapper bw) {转载 2023-06-04 17:38:57 · 402 阅读 · 0 评论 -
Spring Bean生命周期之(2)实例化( Instantiation)
入口:org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName)spring 内置的实现 (主要作用是判断 bean是否需要被代理 ,需要被代理的类 就放入map中)这样这个bean就不会填充任何属性了。但是在实例化bean的时候会重新在去 合并bd 会把缓存中的合并后的。转载 2023-06-04 16:37:54 · 363 阅读 · 0 评论 -
Spring Bean生命周期之(1)BeanDefinition
我们可以看到 SuperUser中包括的 其父类 User的相关属性。这一节我们简单的介绍了 spring BeanDefinition的处理过程。来处理注解 的类生成BeanDefinition 并注入到容器中。中定义 Bean 的配置元信息接口。主要依靠下面三个子类实现的。原创 2023-06-04 15:56:06 · 673 阅读 · 0 评论 -
Spring之状态机讲解
先来解释什么是状态( State )。现实事物是有不同状态的,例如一个自动门,就有open和closed两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个,例如自动门的状态就是两个open和closed。状态机,也就是,不是指一台实际机器,而是指一个数学模型。说白了,一般就是指一张状态转换图。状态机的全称是有限状态自动机,自动两个字也是包含重要含义的。给定一个状态机,同时给定它的当前状态以及输入,那么输出状态时可以明确的运算出来的。原创 2023-05-30 17:31:01 · 3536 阅读 · 1 评论 -
Spring之异步任务@Async详解分析
在业务场景中,有时需要使用自己定义的执行器来跑异步的业务逻辑,那该怎么办呢?答案是,自定义线程池。在方法上的@Async@Async("MyExecutor") //使用自定义的线程池(执行器) public void asyncCpsItemImportTask(Long platformId , String jsonList) {//...具体业务逻辑 } }原创 2023-03-25 17:50:52 · 10381 阅读 · 5 评论 -
JAVA,Spring,Dubbo的SPI机制讲解
内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要用于框架中开发,例如。目录下的以接口全限定名命名的文件,并加载该文件中指定的接口实现类,以此完成调用。机制,针对同一接口采用不同的实现提供给不同的用户,从而提高了框架的扩展性。方法实现对服务提供接口的查找,最后遍历来逐个访问服务提供接口的实现类。机制的思想非常好,但是也存在相应的弊端。内置的用于查找服务提供接口的工具类,通过调用。说明:实例化是通过反射来实现对应的初始化。的思想,但对其进行扩展和优化。来查找服务提供的工具类。原创 2023-02-14 15:48:55 · 920 阅读 · 0 评论 -
Spring重试之Spring-Retry,Guava-Retry,Hystrix,Fast-Retry
我们只要在需要重试的方法上加@Retryable,在重试失败的回调方法上加@Recover,下面是这些注解的属性,表示是否开启重试序号属性类型默认值说明1booleanfalse指示是否要创建基于子类的(CGLIB)代理,而不是创建标准的基于Java接口的代理@Retryable,标注此注解的方法在发生异常时会进行重试序号属性类型默认值说明1String“”将interceptor的bean名称应用到retryable()2valueClass[]{}转载 2022-12-23 15:32:31 · 653 阅读 · 0 评论 -
Spring核心之FactoryBean,BeanFactory,ApplicationContext的区别
以Factory结尾,表示它是一个工厂类(接口), 它负责生产和管理bean的一个工厂定义了IOC容器的最基本形式,并提供了IOC容器应遵守的的最基本的接口,也就是Spring IOC所遵守的最底层和最基本的编程规范。在Spring中,是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖在Spring代码中,只是个接口,并不是IOC这些实现类从不同的维度对进行了扩展。IOC容器,并且提供方法支持外部程序对这些bean。转载 2022-09-20 17:34:52 · 659 阅读 · 0 评论 -
Spring多数据源XML配置
文章目录原创 2022-05-02 21:37:43 · 2256 阅读 · 0 评论 -
SpringBoot中@Import和@ImportResource和@PropertySource
概述:@Import注解是引入java类:导入@Configuration注解的配置类(4.2版本之前只可以导入配置类,4.2版本之后也可以导入普通类) 导入ImportSelector的实现类 导入ImportBeanDefinitionRegistrar的实现类@ImportResource是引入spring配置文件.xmlconfig包下的三个配置类CDConfig....原创 2019-08-01 18:47:45 · 9340 阅读 · 0 评论 -
Spring之RestTemplate详解
文章目录1 RestTemplate1.1 引言1.2 环境配置1.2.1 非Spring环境下使用RestTemplate1.2.2 Spring 环境下使用 RestTemplate1.3 API 实践1.3.1 GET请求1.3.1.1 不带参请求1.3.1.2 带参的get请求(使用占位符号传参)1.3.1.3 带参的get请求(restful风格)1.3.1.4 getForEntity使用示例1.3.2 POST请求1.3.2.1 模拟表单请求1.3.2.2 模拟表单请求(传递对象)1.3.2.原创 2022-03-08 16:28:03 · 23784 阅读 · 0 评论 -
Spring Bean生命周期和重要接口之概述
文章目录1 Spring核心1.1 bean生命周期1.1.1 bean生命周期中重要接口1.1.2 创建bean1.1.3 属性填充1.1.4 初始化bean1.1.4.1 Aware相关接口1.1.4.2 BeanPostProcessors相关接口1.1.4.3 InitializingBean接口1.1.4.4 BeanPostProcessors接口后置方法1.1.5 bean生命周期总结1.2 三级缓存1.2.1 引言1.2.2 三级缓存各个存放对象1.2.3 解决循环依赖条件1.2.4 循环依原创 2022-03-03 10:10:51 · 2052 阅读 · 0 评论 -
SpringBoot配置文件之EL表达式(@Value)
1 配置文件种类Springboot有两种配置文件,一种是application.properties,一种是application.yml,两种配置文件,如果同时存在的话,那么application.properties的优先级要高于application.yml2application.properties讲解2.1修改内嵌容器的端口号server.port=8888.........原创 2019-10-03 10:35:12 · 9026 阅读 · 1 评论 -
Spring测试代码讲解示例
文章目录1 Spring测试简介2 Spring测试示例2.1 pom.xml2.2 测试实例bean2.3 测试配置2.4 测试运行类1 Spring测试简介测试时开发工作中不可缺少的部分,单元测试只针对当前开放的类和方法进行测试,可以简单通过模拟依赖来实现,对运行环境没有依赖,但是仅仅进行单元测试是不够的,它只能验证当前类或方法能否正常工作Spring通过Spring TestContext Framework对基础测试提供顶级支持,它不依赖于特定的测试框架,可以使用junit,或者TestNG原创 2020-12-31 09:55:21 · 407 阅读 · 0 评论 -
Spring线程池ThreadPoolTaskExecutor的使用
文章目录1 简介2 示例2.1 线程池配置类2.2 异步方法2.3 启动测试1 简介Spring 通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor实现一个基于线程池的TaskExecutor,还得需要使用@EnableAsync开启异步,并通过在需要的异步方法那里使用注解@Async声明是一个异步任务Spring 已经实现的异常线程池:SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创原创 2020-12-29 18:21:34 · 46109 阅读 · 1 评论 -
Spring中的事件讲解(Application Event)
文章目录1 Spring事件简介2 Demo示例2.1 pom.xml文件2.2 自定义事件2.3 事件监听器2.4 事件发布类2.5 配置类2.6 启动测试1 Spring事件简介当Spring的事件(Application Event)为Bean和Bean之间的消息同学提供了支持。当一个Bean处理完成一个任务之后,希望另外一个Bean知道并能做相应的处理,这时我们就需要让另外一个Bean监听当前Bean所发生的事件Spring的事件需要遵循如下流程:自定义事件,继承ApplicationEv原创 2020-12-28 09:44:38 · 11894 阅读 · 1 评论 -
Spring面试之AOP相关问题
文章目录1 Spring AOP简介1.1 Spring AOP的描述1.2 关注点和横切关注点的区别1.3 AOP可用的实现1.4 AOP通知类型1.5 AOP代理的含义1.6 引介(Introduction)1.7 连接点(Joint Point)和切入点(Point cut)1.8 织入(weaving)1 Spring AOP简介1.1 Spring AOP的描述Spring AOP(Aspect Oriented Programming,面向切面编程)是OOP(面向对象编程)的补充,它也提供原创 2020-07-14 15:12:35 · 1450 阅读 · 0 评论 -
为什么Spring不扫描controller层注解,springmvc不扫描service层注解
文章目录1 xml代码2 原因说明2.1 俩容器关系2.2 全部放到spring.xml2.3 全部放到springmvc.xml1 xml代码在springmvc中,我们经常配置两个xml,一个spring专属,一个springMVC专属,在这两个xml中我们都可以配置bean的自动扫描。一般我们在spring.xml中不扫描@Controller注解,在springmvc.xml中不扫...转载 2020-04-21 23:14:28 · 5162 阅读 · 0 评论 -
servlet容器,web容器,spring容器,springmvc容器,dubbo容器之间区别
文章目录1 各个容器1.1 Web容器1.2 Servlet容器1.3 Servlet容器和ServletContext的关系1.4 Spring容器和SpringMVC容器1.5 spring与springmvc容器区别1.6 dubbo容器与spring,springmvc容器区别2 容器间的关系图1 各个容器1.1 Web容器web容器(web服务器)主要有:Apache、IIS、To...转载 2020-03-18 21:30:00 · 4231 阅读 · 4 评论 -
由@RequestParam和@RequestBody引入的get和post各发送两次理解
文章目录1 两个注解理解1.1 @RequestParam1.2 @RequestBody2 Http请求报文剖析3 get和post请求3.1 get请求3.2 post请求1 两个注解理解1.1 @RequestParam@RequestParam用来处理请求头Content-Type: 为 application/x-www-form-urlencoded编码的内容。(Http协议中,...原创 2019-11-27 10:36:28 · 4874 阅读 · 1 评论 -
IDEA使用@Autowired注解报错解决方案
1.如果编译没有报错,只是idea报错,可以如下解决:file->settings-> Editor->Inspections 点击搜索栏 输入Spring CoreSpring Core -> Code -> Autowring for Bean Class中将Severity的级别由之前的error改成warning,idea就不会报错2.如果编...原创 2019-04-08 15:53:00 · 6232 阅读 · 0 评论 -
Spring之@Configuration,@PropertySource,@Component和@Bean的详解
1.Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置Spring的Java配置方式是通过 @Configuration 和 @Bean这两个注解实现的:@Configuration作用于类上,相当于一个xml配置文件; @Bean作用于方法上,相当于xml配置中的<bean>; @PropertySource可以指定读取的配置文件,通过@Valu...原创 2019-03-15 18:20:22 · 802 阅读 · 1 评论 -
Spring之事务详解
1.Spring事物的定义: 事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。2. spring七个事务传播属性:PROP......原创 2019-02-25 09:53:39 · 15500 阅读 · 7 评论 -
Spring总结:(4)SSH框架的配置文件
目录1 Spring和Hibernate1.1 实体类1.2 映射1.3 编写DAO及其实现类1.4编写Service及其实现类1.5 加载db.properties1.6 在src下新建spring的配置文件applicationContext.xml2Struts和Spring整合2.1 配置类2.2 业务逻辑类2.3在spring配置文件中配置业务逻辑Action,为业务逻辑Action注入service2.4在src下添加struts的配置文...原创 2018-08-12 16:37:58 · 743 阅读 · 2 评论 -
Spring之IOC、DI、Bean注入创建获取详解
目录IoC – 控制反转 Inversion of Control:DI-依赖注入Dependency Injection:为对象的属性注入值:回调属性的set方法为属性赋值 依赖注入的方式: 1.setter注入:回调属性对应的setter方法为属性赋值 2.构造方法(构造子)注入:回调构造方法为属性赋值;本质上回调类的构造方法对属......原创 2018-08-11 20:24:01 · 844 阅读 · 1 评论 -
spring总结:(1)基本介绍和配置文件说明
目录1 Spring介绍1.1 简单介绍1.2 模块介绍2 配置文件说明2.1 基本介绍2.2 配置文件的小结2.2.1 bean标签2.2.2 alias标签2.2.3 import标签2.2.4property标签2.2.5constructor-arg标签:构造方法注入3 使用dom4j解析xml3.1编写Dao及其实现类3.2编写Service及其实现类3.3在src下新建配置文件applicationContext.xml...原创 2018-08-09 21:50:21 · 311 阅读 · 0 评论