202010-10 这一次搞懂Spring事务注解的解析方式 前言事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑。但是Spring事务原理是怎样?事务在方法间是如何传播的?为什么有时候事务会失效?接下来几篇文章将重点分析Spring事务源码,让我们彻底搞懂Spring事务的原理。正文XML标签的解析<tx:annotation-driventransaction-manager="transactionManager"/>配置过事务的应该都不陌生,上面这个配置就是... 继续阅读 >
202010-10 Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表功能 一、Sharding-jdbc简介“Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。官方文档地址:https://shardingsphere.apache.org/document/current/cn/overview/本文demo实现了分库分表功能。如有错误,欢迎各位在评论中指出。不胜感激!二、项目结构首先创建... 继续阅读 >
202010-10 Spring Cloud Admin健康检查 邮件、钉钉群通知的实现 本文主要介绍了SpringCloudAdmin的使用,分享给大家,具体如下:源码地址:https://github.com/muxiaonong/Spring-Cloud/tree/master/cloudadminAdmin简介官方文档:WhatisSpringBootAdmin?SpringBootAdmin是一个用于管理和监控SpringBoot微服务的社区项目,可以使用客户端注册或者Eureka服务发现向服务端提供监控信息。注意,服务端相当于提供UI界面,实际的监控信息由客户端Actuator提供通过SpringBootAdmin,你可以... 继续阅读 >
202010-10 你所不知道的Spring的@Autowired实现细节分析 前言相信很多Java开发都遇到过一个面试题:Resource和Autowired的区别是什么?这个问题的答案相信基本都清楚,但是这两者在Spring中是如何实现的呢?这就要分析Spring源码才能知道了。友情提示:本篇主要是讲解Autowired的实现原理,不会分析Spring初始化的过程,不熟悉的读者可以先阅读笔者之前的一篇文章《这一次搞懂Spring的Bean实例化原理》。正文在SpringBean的整个创建过程中会调用很多BeanPostProcessor接口的的实现类:上... 继续阅读 >
202010-10 Spring Cloud Feign 自定义配置(重试、拦截与错误码处理) 代码实践 基于spring-boot-starter-parent2.1.9.RELEASE,spring-cloud-openfeign2.1.3.RELEASE引子Feign是一个声明式、模板化的HTTP客户端,简化了系统发起Http请求。创建它时,只需要创建一个接口,然后加上FeignClient注解,使用它时,就像调用本地方法一样,作为开发者的我们完全感知不到这是在调用远程的方法,也感知不到背后发起了HTTP请求:/***@authoraxin*@suammryxx客户端*/@FeignClient(value="xxClient",url="${... 继续阅读 >
202010-10 这一次搞懂Spring的Bean实例化原理操作 前言前两篇文章分析了SpringXML和注解的解析原理,并将其封装为BeanDefinition对象存放到IOC容器中,而这些只是refresh方法中的其中一个步骤——obtainFreshBeanFactory,接下来就将围绕着这些BeanDefinition对象进行一系列的处理,如BeanDefinitionRegistryPostProcessor对象方法的调用、BeanFactoryPostProcessor对象方法的调用以及Bean实例的创建都离不开这些BeanDefinition对象。下面就来看看Spring是如何处理这些对象的。正... 继续阅读 >
202010-09 Spring Security整合Oauth2实现流程详解 一、创建项目并导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.3.6.RELEASE</versi... 继续阅读 >
202010-09 从零搭建Spring Boot脚手架整合OSS作为文件服务器的详细教程 1.前言文件服务器是一个应用必要的组件之一。最早我搞过FTP,然后又用过FastDFS,接私活的时候我用MongoDB也凑合凑合。现如今时代不同了,开始流行起了OSS。Gitee:https://gitee.com/felord/konoday06分支欢迎StarGitHub:https://github.com/NotFound403/konoday06分支欢迎Star2.什么是OSS全称为ObjectStorageService,也叫对象存储服务,是一种解决和处理离散单元的方法,可提供基于分布式系统之上的对象形式的数据存... 继续阅读 >
202010-09 Spring Boot整合mybatis使用注解实现动态Sql、参数传递等常用操作(实现方法) 前面介绍了SpringBoot整合mybatis使用注解的方式实现数据库操作,介绍了如何自动生成注解版的mapper和pojo类。接下来介绍使用mybatis常用注解以及如何传参数等数据库操作中的常用操作。其实,mybatis注解方式和XML配置方式两者的使用基本上相同,只有在构建SQL脚本有所区别,所以这里重点介绍两者之间的差异,以及增删改查,参数传递等注解的常用操作。详解SpringBoot快速整合Mybatis(去XML化+注解进阶)已经介绍过了... 继续阅读 >
202010-09 JavaEE SpringMyBatis是什么? 它和Hibernate的区别及如何配置MyBatis MyBatisMyBatis是一个基于Java的持久层框架。MyBatis提供的持久层框架包括SQLMaps和DataAccessObjects(DAO),它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。目前,Java的持久层框架产品有许多,常见的有Hibernate和MyBatis。MyBatis和hibern... 继续阅读 >
202010-09 JavaEE Spring MyBatis如何一步一步实现数据库查询功能 配置好一个SptingBoot项目配置好MyBatisJavaEESpring~MyBatis是什么?它和Hibernate的区别有哪些?如何配置MyBatis?SpringBoot配置文件application.properties简单介绍确保MyBatis配置正确手动实现一个xml文件上面我是用的是一个自定义的接口此时没有它对应的xml文件此时我们需要下图中column表示查询列,property表示返回类型中的属性在Controller中进行测试packagelisten.controller;importlisten.mapper.TestMappe... 继续阅读 >
202010-09 spring打包到jar包的问题解决 今天把spring打包到一个jar包中,jar运行时抛异常Exceptioninthread"main"org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:Line5inXMLdocumentfromclasspathresource[spring.xml]isinvalid;nestedexceptionisorg.xml.sax.SAXParseException;lineNumber:5;columnNumber:77;cvc-elt.1:找不到元素'beans'的声明。atorg.springframework.beans.factory.xml.XmlBeanDefinitionRea... 继续阅读 >
202010-09 spring配置文件解析失败报”cvc-elt.1: 找不到元素 ''beans'' 的声明”异常解决 最近项目里面做了一个定时器,结果报错这个。网上的原因大多说是什么版本问题。我记录下我的问题所在。由于项目启动在局域网,不能访问互联网。打出来的jar包里面spring.schemas的文件有些奇怪。居然是这样的。我查看spring-beans的包发现并不是这个。spring的是这样的,于是直接替换掉包里面的此文件。项目正常启动。至于为何打包之后变成ali的路径,现在还不知道原因。总结到此这篇关于spring配置文件解析失败报”cvc-elt.1:找... 继续阅读 >
202010-09 Spring Cloud负载均衡及远程调用实现详解 负载均衡使用微服务后,为了能够承担高并发的压力,同一个服务可能会启动多个实例。这时候消费者就需要负载均衡,把请求分散到各个实例。负载均衡主要有两种设计:服务端负载均衡客户端负载均衡对于传统的分布式服务来说,大多使用服务端负载均衡。一般会使用Nginx或者ELB等工具作为负载均衡器,如下图:传统负载均衡而在SpringCloud中,使用的是「客户端负载均衡」的方式,使用「Ribbon」组件来实现客户端的负载均衡。只要引入了... 继续阅读 >
202010-09 Spring Boot Swagger2使用方法过程解析 1.添加Swagger2依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.2.2</version></dependency>2配置类@Configuration@EnableSwagger2publicclassSwagger2{@BeanpublicDocketcreateRestApi(){returnnewDocket(... 继续阅读 >
202010-09 Spring Security OAuth2 授权码模式的实现 写在前边在文章OAuth2.0概念及授权流程梳理中我们谈到OAuth2.0的概念与流程,这里我准备分别记一记这几种授权模式的demo,一方面为自己的最近的学习做个总结,另一方面做下知识输出,如果文中有错误的地方,请评论指正,在此不胜感激受众前提阅读本文,默认读者已经过SpringSecurity有一定的了解,对OAuth2流程有一定了解本文目标带领读者对SpringSecurityOAuth2框架的授权码模式有一个比较直观的概念,能使用框架搭建授权... 继续阅读 >