
简单了解springBoot微服务
文章平均质量分 67
张某某啊哈
做一个有梦想的程序猿
展开
-
Spring事务@Transactional常见的8种失效场景(通俗易懂)
在Spring的Aop代理下,只有目标方法在外部进行调用,目标方法才会由Spring生成的代理对象来进行管理,如果是其他不包含@Transactional注解的方法中调用包含@Transactional注解的方法时候,有@Transactional注解的方法的事务会被忽略,则不会发生回滚。这是因为@Async注解使用的是独立线程和独立的事务,和notice的不处于同一个事务当中,所以notice回滚了,但是history入库了。虽然程序当中抛出了异常,但是数据库还是成功入库了,这样显然是不合理的!转载 2024-12-17 09:58:31 · 603 阅读 · 0 评论 -
Spring boot 线程池使用——事务处理机制
所以,在spring boot线程池使用时,给@Async方法加@transactional是一种比较方便的处理方式。除此之外,将事务主体作为单独对象调用,也可以保证事务生效。异步方法在没有事务注解的情况下,去调用通过@Autowired注入的有事务注解的其他对象方法时,事务是生效的(即表格第三列倒数第二行结论)。图中表示的是用@Async注解修饰的异步方法,在各种场景下的事务表现。其背后的原理是,AOP的动态代理生成的代理对象和当前对象的区别。异步任务中,事务也是很关键的一部分。原创 2024-12-17 09:42:43 · 220 阅读 · 0 评论 -
Spring三级缓存解决循环依赖
肯定是有一些缺陷的。比如,可能AService会进行AOP操作,会创建AServiceProxy代理对象,然后将代理对象放入单例池中,但是BService进行属性赋值 依赖注入的时候是把AService的普通对象进行赋值,所以这里是有问题的,应该是赋值AServiceProxy代理对象。可以引入一个map来解决循环依赖问题,在创建AService普通对象的时候,将这个普通对象存入map中,然后在BService创建的生命周期中进行依赖注入时,如果在单例池中没有找到AService对象就去map中找。转载 2024-12-16 17:15:24 · 45 阅读 · 0 评论 -
Spring Boot如何在项目启动成功后执行一段初始化逻辑
文章目录背景说明一、入门级:启动main方法中添加初始化逻辑二、黄金级:实现ApplicationRunner或CommandLineRunner接口三、大神级:ApplicationListener监听启动完成事件背景说明在我们使用Spring Boot进行项目开发时,偶尔会遇到在Spring Boot项目启动完成后需要执行一些初始化的逻辑,比如缓存预加载,数据库初始化等。那么这种需求我们需要怎么实现呢?本文将提供3种方法供大家参考。转载 2024-12-16 16:26:28 · 71 阅读 · 0 评论 -
SpringBoot——加载配置文件顺序和类型
可以使用@PropertySource标签指定自定义的配置文件名称和路径;(默认能加载到的配置文件也会先被加载)通常只会用到设置配置文件的名字,并且配置文件的名字可以随便定义,可以叫xxxx.properties、a.txt、b.abc等等,但是内容格式需要跟.properties一致,即kv格式,所以不能直接加载yml格式的配置文件;原创 2024-12-16 15:28:25 · 1547 阅读 · 0 评论 -
SpringCloud中的bootstrap配置
这节的案例中是配置一个Provider,一个eureka,他们的配置统一在github上获取,实现统一配置分布式管理和多环境变更,这个才比较有实战意义。编写controller,此步骤也比较关键,主要是利用@Value注解赋值,若写错了bootstrap.yml中的配置文件名称而没有获取到配置,启动时这里会抛出异常。先写好provider和Eureka的配置yml文件,这两个文件和平常配置没什么不同,因为这里主要是说config,所以就没有配置集群,上传yml到github。原创 2024-12-16 15:17:50 · 1530 阅读 · 0 评论 -
springcloud中的LoadBalancerClient 负载策略原理
LoadBalancerClient先从提供的服务中获取某一个实例(默认策略为轮询),比如订单服务需要访问商品服务,商品服务有3个节点,LoadBalancerClient会通过choose(),方法获取到3个节点中的一个服务,拿到服务的信息之后取出服务ip信息,就可以得到完成的想要访问的ip地址和接口,最后通过RestTempate访问商品服务。进入ServiceInstanceChooser接口中,可以看到主要的方法为choose(),这是是用来根据服务的名称,获取来选择其中一个服务实例。原创 2024-12-16 14:48:03 · 645 阅读 · 0 评论 -
springboot 中注解@Async失效的情况
@Async失效的情况原创 2022-12-03 17:20:05 · 1869 阅读 · 0 评论 -
SpringBoot-内嵌Tomcat源码剖析
Spring Boot 默认支持 Tomcat , Jetty ,和 Undertow 作为底层容器。而 Spring Boot 默认使用 Tomcat ,一旦引入 spring-boot-starter-web 模块,就默认使用 Tomcat 容器。原创 2022-10-24 17:39:28 · 751 阅读 · 0 评论 -
Springboot中@RequestParam详解
RequestParam详解转载 2022-10-13 15:58:46 · 15246 阅读 · 0 评论 -
解决springboot2.x集成redis节点故障redisTemplate报错redis Command timed out
redisTemplate报错redis Command timed out转载 2022-09-23 10:26:05 · 2776 阅读 · 0 评论 -
springboot中@date详情作用
lombok的使用转载 2022-09-22 14:52:26 · 919 阅读 · 0 评论 -
SpringBoot 中定时任务@EnableScheduling
springboot 中@schedule注解的使用原创 2022-09-22 14:47:49 · 265 阅读 · 0 评论 -
Springboot中@Order注解的使用
@Order注解的使用原创 2022-09-21 16:40:43 · 1935 阅读 · 0 评论 -
SpringBoot中@component的作用详细介绍
@component的作用详细介绍原创 2022-09-21 16:32:39 · 4583 阅读 · 0 评论 -
SpringBoot中CommandLineRunner 接口详细说明
SpringBoot提供的一种简单的实现方案,实现CommandLineRunner接口,实现功能的代码放在实现的run方法中加载,并且如果多个类需要夹加载顺序,则实现类上使用@Order注解,且value值越小则优先级越高。容器启动之后,加载实现类的逻辑资源,已达到完成资源初始化的任务;定义静态常量,随着类的生命周期加载而提前加载(这种方式可能对于工作经验较少的伙伴,选择是最多的)原创 2022-09-21 16:22:24 · 1197 阅读 · 0 评论 -
使用eclipse创建Spring boot project报错:Project build error: Non-resolvable parent POM 可以通过maven配置解决
刚开始创建Spring boot项目时,pom.xml文件时报如下图错误:在网上百度的说让更新下Maven的update project,我试了没用,之后就重新下maven并且配置上了阿里的中央仓库的镜像 maven下载和安装 注意:安装Maven3之前需要安装jdk1.7以上版本,下面介绍的是最新版Maven官网下载并安装,每个人使用的编辑器不同,在这...原创 2018-09-15 00:46:53 · 45571 阅读 · 11 评论 -
学习springBoot 数据的增删改查(三)
使用springBoot连接数据库对数据做增删改查的操作,要先下载一个postman后面测试的时候要使用。postman使用和下载连接https://mp.youkuaiyun.com/postedit/83154623 项目当中pom.xml 文件当中要引入jap 与 mysql的关联jar <!-- 引入jpa --> <dependen...原创 2018-10-20 00:28:21 · 1087 阅读 · 3 评论 -
学习springBoot项目属性的配置 (二)
在实际开发当中我们对于项目配置的获取是必不可少的,举例子来学习SpringBoot是如何快速获取配置文件中的数据与切换读取不同的配置文件内容先创建一个springBoot基本配置文件 (application.properties)1.修改我们启动的端口号2.访问连接在加上一层内容 (以前的访问路径:http://localhost:8080/hello 现在的访问路...原创 2018-10-14 23:45:58 · 192 阅读 · 0 评论 -
学习springBoot 进阶表单验证(四)
现在用一个新的springBoot项目来继续学习,所有的配置都是和springBootdemo一样只是名字换了一下SpringBootUpgrade 新项目 现在修改一下添加的方法,不在直接传数值,而是直接传一个Girl对象到后台新增修改后 启动项目去测试一下 postman测试一下修改过后的方法能不能成功,添加成功。 接下来就我们在添加一...原创 2018-10-24 22:36:58 · 227 阅读 · 0 评论 -
学习springBoot 进阶统一异常处理(六)
在实际开发当中我们经常会遇到BUG,所以都会封装一个异常返回类来使用,提示我们到底是那一步出了问题,方便于我们追踪问题并且解决问题,以下举个添加女孩对象为例子,当添加的女孩对象年龄小于10岁时我们提示该女孩在上小学,大于10岁且小于16岁提示可能在上初中,通过例子说明我们如何对异常统一处理并返回提示结果的 在domain包下添加一个Result类 Result类 p...原创 2018-10-31 23:43:30 · 293 阅读 · 0 评论 -
SpringBoot总结
一.springBoot的介绍Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。1. 创建独立的Spr...原创 2018-11-05 22:03:06 · 190 阅读 · 0 评论 -
学习springBoot 进阶AOP处理请求(五)
AOP概述 如图中显示,当我们请求的操作继续往下走的时候都是相类似的, 那这个时候我们就可以把具体的业务操作代码提取出来作为公共的操作,这样就有了面向切面编程AOP 下面来举例子说明 如何AOP统一处理请求日志pom.xml 文件中引入AOP依赖 <!-- 引入AOP依赖 --> <dependency> ...原创 2018-10-29 23:43:47 · 238 阅读 · 0 评论 -
学习 springBoot 微服务 (一)
springBoot (微服务)简述Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。1. 创建独立的...原创 2018-10-11 00:26:03 · 719 阅读 · 0 评论