年底一直在忙着赶项目,为了方便项目的本地开发调试,我给项目引入了spring-boot-devtools热部署,谁知引来了莫名奇妙的问题,代码中老是抛ClassCastException。...再定位到实现类的抛异常的580行代码,就是改写后的for循环。真是没辙了,找不到原因的我只能一脸懵逼。 ?...在项目的pom文件里,依赖了spring-boot-devtools的包,代码如下: ? 然后干掉这个依赖,项目运行一切正常。...IDE中启用开发配置文件)。...3,配置memcached(以及缓存的内容)以在应用程序类加载器中运行。我不建议使用该选项,因为上面的前两个更容易实现。
大家好,又见面了,我是你们的朋友全栈君。...,相互没有影响,插多少是多少,不能因为某个数据挂了,把之前插的全部回滚) 2.SpringBoot事务配置 2.1 依赖导入 在SpringBoot中使用事务,需要导入mybatis依赖:...因为SpringBoot默认的事务规则是遇到运行异常和程序错误才会回滚,比如上述例子中抛出的RuntimeException就没有问题,但是抛出SQLException就无法回滚了,针对非运行时异常,如果要进行事务回滚的话...直接往上抛,给上一层来处理即可,千万不要在事务中把异常自己“吃”掉。...方法上是加了事务的,那么也就是说,在执行该方法开始时,事务启动,执行完了之后,事务关闭,但是synchronized没有起作用,其实根本原因是因为事务的范围比锁的范围大,也就是说,在加锁的那部分代码执行完之后
运行springboot-mybatis 我首先运行的是依赖最少的springboot-mybatis,只需要开启个服务端,配置好本地数据库,建好表就可以运行了,这个其实没什么好说的,我运行的也很顺利,...,liunx系统运行seata-server.sh这个,它默认开启8091端口,配置文件在/conf目录下,主要需要修改的是file.conf和refistry.conf,之后会讲到 如下图目录下除了common...,你可以在抛异常之前打上断点,运行到这时你会发现,去看数据库,库存已经扣了,订单已经添加了,undo_log表有了记录,这涉及到它的回滚原理了,大概说一句,通过已经运行sql进行记录日志,成功了删掉日志...,默认情况下是本地文件存储,所以一开始的mybatis项目我们没感觉需要依赖,然后上面的这句提醒也成功带歪了我,让我没想到是服务端出了问题 该文件可以选择file 、nacos 、eureka、redis...里去,同样毫无文档,我得之后自己看源码去研究 这里在demo里重要用到的属性service.vgroup_mapping.my_test_tx_group,这个key的值就相当于服务端的服务名,在Eureka
redis.properties,是因为我在spring-dao.xml中引入jdbc.properties时一起引入了,所以这里无需再引入。...image.png 可以看到又打印出了sql语句,且输出了del key,说明已经清除了缓存,再次从数据库中查找。 这样就完成了spring与redis的整合。...image.png 4、接下来就可以使用redis缓存了: 在需要使用的地方加上注解即可。...总结: spring整合redis: 总的来说就是引依赖、编写RedisUtil、编写redis.properties、在spring-redis.xml中配置,最后在需要使用的地方用注解就行了。...spring boot整合redis: 总的来说就是引依赖、在application.properties中配置、在启动类上加@EnableCaching注解,然后在需要使用的地方用注解就行了。
我们假设存在一个Dubbo RPC API,由服务提供者为服务消费者暴露接口: 首先,添加依赖: 然后,在application.yml中添加Dubbo的相关配置信息,示例配置如下: 接下来,在SpringBoot...消费Dubbo服务 首先,添加依赖: 其次,在application.properties中添加Dubbo的相关配置信息,示例如下: 然后,开启@EnableDubboConfiguration:...使用时,我们只需要在调用端的Service中注入InvokeRemoteService就可以像调用本地方法一样进行远程调用: 对于Dubbo服务的消费者,你可以借助Spring Cloud中的Feign...首先,加入下面的Maven依赖: 然后,实现RPC接口定义: 服务端可以支持多协议发布服务: 接着,我们完成对消费端的实现: 在application.properties中添加Dubbo的版本信息和客户端超时信息...在DubboAutoConfiguration配置类中启动Bean,当配置文件中的前缀以“dubbo”开始时,会注入相关配置并完成初始化,然后获取所有加了@Service注解的类,使用反射生成代理类。
➢ static|templates:后面模板技术中存放文件的目录 ➢ application.properties:SpringBoot的配置文件,很多集成的配置都可以在该文件中 进行配置,例如:Spring...2.2.9 在 IDEA 中右键,运行 Application 类中的 main 方法 通过在控制台的输出,可以看到启动SpringBoot框架,会启动一个内嵌的tomcat,端 口号为 8080 ,上下文根为空...Springboot的父级依赖,开发SpringBoot程序都需 要继承该父级项目,它用来提供相关的Maven默认依赖,使用它之后,常用的jar 包依赖可以省去version配置 ➢ Spring Boot...核心配置文件中有中文信息,会出现乱码: ◼ 一般在配置文件中,不建议出现中文(注释除外) ◼ 如果有,可以先转化为ASCII码 ( 15 ) 友情提示 大家如果是从其它地方拷贝的配置文件,一定要将里面的空格删干净.../dependency> ( 4 ) 在 Springboot 的核心配置文件 application.properties 中配 置数据源 注意根据自己数据库的信息修改以下内容 #配置内嵌Tomcat
下图 这里注意一点的是,如果上面我们选择了war形式,也添加了Web依赖并且在开发过程中使用Application形式启动,则需要注释pom.xml配置文件内tomcat依赖的scope属性。...图7 初尝试运行项目 我们在入口程序类中右键->Run LessonOneApplication在控制台的输出如下”图8“所示,证明你已经成功的运行了springboot项目。 ?...我们现在通过浏览器直接访问是得不到任何回应的,只是会有一个错误页面,如下”图9“所示 ?...图11 可以看到我们输出了”HelloWord“!自此我们这章的讲解就完成了。 源码地址 本章以及后续章节的源码地址我都会分享出来,请大家自行下载以及git clone。...本人是第一次书写文章,还请大家多多包涵,如果有什么改进指教的地方还请指出,非常感谢!
在 2020 年 8 月 3 日 推出的《Java 开发手册嵩山版》后历经了 18 个月阿里又推出了《Java 开发手册黄山版》。...在整个手册中可以逐步地学到知识(手册背不下来,只能逐步的吸收,并尽量付诸实践),也可以从知识的表面理解一些更深层的思想。其实之前我做 PHP 的时候,就对这份手册非常的喜欢。...【强制】二方库定制包的命名方式,在规定的版本号之后加“-英文说明[序号]”,英文说明可以是部门简称、业务名称,序号直接紧跟在英文说明之后,表示此定制包的顺序号。...正例:当系统弱依赖于多个外部服务时,如果下游服务耗时过长,则会严重影响当前调用者,必须采取相应降级措施,比如,当调用链路中某个下游服务调用的平均响应时间或错误率超过阈值时,系统自动进行降级或熔断操作,屏蔽弱依赖负面影响...---- 我在每个分类后都增加了具体的页码,大家可以自行查阅。
“重试”和“使用备份的依赖”都是“立刻处理“。 但若重试无效,所有的[备份服务]也无效,也许就能像上面那样把错误抛给前端,提示用户“服务器开小差”。...从这方案易看出,你想把错误抛到哪里是因为那个catch的地方是处理问题最方便的地方。一个问题的解决方案可能要几个不同的错误处理组合起来才能办到。 ◆ 4NPE了! 你的程序抛个NPE。...这一般就是程序员的bug: 要不就是程序员想表达一个东西”没有“,结果在后续处理中忘判断是否为null 要不就是在写代码时觉得100%不可能为null的地方出现了一个null 不管哪种,这错误用户总会看到一个很含糊的报错信息...因此抛异常到一个集中处理错误的地方,把异常转换为某个业务错误码的方法,合理 后端服务一般无状态。这也是软件系统设计的一般原则。无状态才意味着可随时随地安心重启。...因此,程序员在每次抛错或者处理错误的时候都要三省吾身: 这个错误的处理是正确的吗? 会让用户看到什么? 会不会搞乱数据? 不要以为自己抛了个异常就不管了。
为了证实我的猜想,我将applicaiton.yml里的代码删掉了,然后重新启动了下服务,调用了下接口,结果报出了这个错误: Caused by: java.lang.IllegalArgumentException...尽管代码正常运行起来了,但是我的脑海不仅有了个疑问:**"为什么在切换写法前,Apollo配置能够正常覆盖,但是在切换了写法之后,就不行了呢?"...查阅资料后,我知道了在SpringBoot中,存在一个名为Application的变量,其中保存着Spring中启动的所有信息。...这里简单介绍下这三种情况对应的Springboot运行阶段分别负责的功能是: prepareEnvironment,是最早加载配置的地方,bootstrap.yml配置、系统启动参数中的环境变量都会在这个阶段被加载...总结 在了解了上述配置的作用机制后,我在原本代码中添加了apollo.bootstrap.enabled=true,将Apollo的配置加载提前到了FeignClient加载前,然后重新运行代码,项目果然如想象中的正常运转起来
其中有很多可能就是刚开始整合的时候需要配置,之后压根就不会再动了。 鉴于此, Spring又推出了又一神器SpringBoot. 它可以让我们更加快速的开发 Spring应用,甚至做到了开箱即用。...由于在实际开发中我们使用 SpringBoot+ SpringCloud进行了一段时间的持续交付,并在生产环境得到了验证,其中也有不少踩坑的地方,借此机会和大家分享交流一下。...将生成好的项目导入 IDE(我使用的是 idea)中,目录结构如下; 其中的 SbcUserApplication是整个应用的入口。...为了方便之后的代码复用,我将 common包中的一些枚举值、工具类单独提到 sbc-common应用中了,这样有其他应用要使用这些基础类直接引入这个依赖即可。...本次算是 springBoot+springCloud的入门,还有很多东西没有讲到,之后我将会根据实际使用的一些经验继续分享 SpringCloud这个新兴框架。
大家好,又见面了,我是你们的朋友全栈君。 SpringBoot项目中需要配置事务管理,所以在这里系统地整理下关于@Transactional 注解相关的知识!...声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。...声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式。本文将着重介绍基于 @Transactional 注解的事务管理。...2.不要图省事,将@Transactional放置在类级的声明中,放在类声明,会使得所有方法都有事务。...5.spring的事务在抛异常的时候会回滚,如果是catch捕获了,事务无效。
1.2作用 微服务架构中的熔断器,就是当被调用方没有响应,调用方直接返回一个错误响 应即可,而不是长时间的等待,这样避免调用时因为等待而线程一直得不到释放, 避免故障在分布式系统间蔓延; 2入门案例...在消费端加入组件的依赖 <!...就是远程服务不能用了,才有这个,这个就是执行fallbackMethod里面的方法 2.3 Hystrix 的异常处理 就是如何获取异常信息 我们在调用服务提供者时,我们自己也有可能会抛异常,默认情况下方法抛了异...; 如果远程服务有一个异常抛出后我们不希望进入到服务降级方法中去处理,而是 直接将异常抛给用户,那么我们可以在@HystrixCommand 注解中添加忽略异 常,如下 2.4自定义 Hystrix...service接口,重写里面的方法,方法里面的东西就是远程出现错误的时候,走当前里面的东西; 3 在feign的service方法上面写这个 4 当提供者接口出现错误的时候,就会走回调函数里面的东西
甚至在艿艿接触过的后端开发中,认为这是前端的活,简直了!...同时,因为我们在 Service 也会有参数校验的诉求,所以我们也会提供示例。 3.1 引入依赖 在 pom.xml 文件中,引入相关依赖。 <?...在 Spring Boot 体系中,也提供了 spring-boot-starter-validation 依赖。在这里,我们并没有引入。为什么呢?...对于 #add(addDTO) 方法,我们在 addDTO 参数上,添加了 @Valid 注解,实现对该参数的校验。校验不通过示例如下图: ? errors 字段,参数错误明细数组。...这里,我们在抛个问题,如果 #add(addDTO 方法,如果参数正确,在走完 DataBinder 中的参数校验后,会不会在走一遍 MethodValidationInterceptor 的拦截器呢?
大家好,又见面了,我是你们的朋友全栈君。 今天想重新学习一下之前大学学过的Springboot框架。...但是如果在Mapper层中加了注解,在配置主类SpringBootMybatisApplication里面就不需要@MapperScan(“com.example.demo.mapper”)扫描注解,在配置类里加扫描注解的意思是将这个包下所有的都注解成...坑二:使用STS创建的SpringBoot项目,其中配置文件默认的是application.properties,一般在这个文件里面配置数据源。...但是此时如果加了这个注解,由于Mybatis的依赖中的jar包, org.mybatis.spring.boot <...坑三:由于我配置文件中加了Mongodb的依赖,导致运行的时候还报了错。删除之后就OK了。
构建路径为“/”,代表是项目根目录,Dockerfile可以使用本地和云端,我使用本地,在项目的根目录添加一个Dockerfile文件 ?...这是一个初始化的Springboot项目,我在application里添加了Controller标签,输出了一句“hello docker”,仅此。...,Springboot项目依赖的基础镜像很简单,只需要maven和jdk即可,当然如果你里面用了数据库、redis什么的,只有maven和jdk就不行了。...为毛我的from镜像是那么长一串,而不是maven3-jdk-8的基础镜像呢,这可是我精心找的最快的适合Springboot基础镜像了。...众所周知,很多原始镜像下载速度很慢,而maven的依赖下载更是慢上加慢,平时开发中我们都习惯于使用阿里的maven仓库。这个基础镜像就是集成的阿里的maven库,而是地址在国内,下载飞快。
具体详细说明:https://www.zhihu.com/question/20215561 (PS:写的是真的简单易懂) springboot整合Webscoket 实现websocket有多种方式:...最简单的H5, sockjs以及使用STOMP协议 开发环境 JDK版本1.8 springboot版本2.1.0 开发工具:IDEA MVAEN 基于H5的websocket实现 第一步 引入依赖 在...springboot2.0版本之后,官方添加了Webscoket的依赖,因此只需要在pom当中引入 <!...message = document.getElementById('text').value; websocket.send(message); } //连接发生错误的回调方法...setMessageInnerHTML("关闭连接"); } //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
二.概念讲解 在springboot项目的pom文件中会发现很多带starter的pom包,这也是springboot的一个典型特点,starter是什么?怎么用的? ...所以说,starter中简单来讲就是引入了一些相关依赖和一些初始化的配置。 为什么加了**@Configuration注解还是要配置META-INF/spring.factories呢?...但是这样麻烦的一个地方是,我对日期格式化输入输出的地方很多,如果每个地方我都要单独处理,那么实体类上面标注的注解就会很多。...我不想让他加载进来,除了直接把这个类再启动类的地方排除掉,我们还可以在配置类的上面这在注解配置 @ConditionalOnProperty(value = "common.config.jackson.enable...如果未做条件性判断加载bean的情况,直接启动项目就可以在加载配置。否则添加对应的配置即可。 七.参考与引用 SpringBoot中starter原理简介
看完可以了解一些基本的知识,大致如下: springboot的特性有哪些? 为什么在配置文件里面配置一些变量,springboot就能提供某些功能? springboot内部自动配置原理是什么?...在spring jira中创建了一个功能需求:在spring框架中支持无容器web应用程序 2013年:开始研发该需求 2014年:springboot 1.0.0版本发布 2014年:springboot...通过传递依赖,添加一个依赖项就相当于添加了一堆依赖项 2....3. profile配置 使用@Profile("production") 注解 配置不同的application-{profile}.properties或yml文件 在同一个yml文件中配置,用-...自动配置,起步依赖,Actuator 2. 为什么在配置文件里面配置一些变量,springboot就能提供某些功能?
这个注解是Javaee标准里的注解,tomcat7以上已经对其进行了实现,如果是用传统方法使用tomcat发布项目,只要在pom文件中引入javaee标准即可使用。...使用springboot的websocket功能首先引入springboot组件。...的唯一区别是要@Component声明下,而使用独立容器是由容器自己管理websocket的,但在springboot中连容器都是spring管理的。...已经做了深度的集成和优化,要注意是否添加了不需要的依赖、配置或声明。...由于很多讲解组件使用的文章是和spring集成的,会有一些配置,在使用springboot时,由于springboot已经有了自己的配置,再这些配置有可能导致各种各样的异常。
领取专属 10元无门槛券
手把手带您无忧上云