- 博客(104)
- 资源 (34)
- 收藏
- 关注
原创 实时数据推送并非只有WebSocket一种选择
在Web应用中,有几种实时数据推送的选择方案,包括SSE(Server-Sent Events)、WebSocket、长轮询等。SSE是一种基于HTTP协议的服务器向客户端推送数据的技术。它的优点是实现简单、轻量级,对现有服务器软件兼容性好。但是,由于SSE是单向通信模型,只能由服务器向客户端推送数据,对于需要客户端向服务器发送数据的场景,SSE就无法满足需求。WebSocket是一种双向通信模型,允许客户端和服务器之间互相发送消息。
2023-11-20 09:05:03
844
原创 Spring Cloud 远程接口调用OpenFeign负载均衡实现原理详解
环境:Spring Cloud 2021.0.7 + Spring Boot 2.7.12。
2023-07-13 13:27:59
2832
原创 Springboot3新特性异常信息ProblemDetail详解
例如,考虑一个响应,该响应表明客户的账户没有足够的权限。此外,Problem Detail信息可以包含其他信息,例如标识问题具体发生的URI(有效地为“Joe上周四没有足够的信用”这一概念提供了标识符),这对于支持或取证目的可能很有用。,以确保这个“properties”映射被展开,并在响应中作为顶级JSON属性呈现,同样,反序列化期间的任何未知属性都会插入到这个Map中。的方便基类,它处理所有Spring MVC异常,以及任何ErrorResponseException,并渲染一个带有主体的错误响应。
2023-07-02 12:36:22
946
原创 SpringBoot整合ShardingSphere5.x实现数据加解密功能
SpringBoot整合ShardingSphere5.x实现数据加解密功能
2023-06-07 18:02:35
1658
原创 Spring Cloud 中断路器 Circuit Breaker的应用
Spring Cloud 中断路器 Circuit Breaker的应用
2022-03-01 16:25:55
2523
原创 SpringBoot WebFlux整合Spring Security进行权限认证
环境:Springboot2.5.8请先阅读:Reactor响应式编程(Flux、Mono)基本用法Spring WebFlux入门实例并整合数据库实现基本的增删改查Spring Boot Security防重登录及在线总数简介Spring Security的WebFlux支持依赖于WebFilter,对Spring WebFlux和Spring WebFlux.Fn的作用相同。WebMVC依赖于Filter。依赖管理<dependency> <gro
2022-01-14 09:16:00
2249
原创 SpringMVC函数式接口Router Function你用过吗?
环境:Springboot2.4.12概述Spring Web MVC包括WebMvc.fn,这是一种轻量级函数式编程模型,其中函数用于路由和处理请求,参数及返回值设计为不可变。它是基于注释的编程模型的替代方案,但在其他方面还是运行在同一DispatcherServlet上。在WebMvc.fn中,HTTP请求由HandlerFunction处理:该函数接受ServerRequest并返回ServerResponse。请求和响应对象都有不可变,提供对HTTP请求和响应的JDK 8友好访问。Han
2021-11-15 09:11:58
4134
1
原创 Springboot定义Controller接口的这些方式你肯定不知道
环境:Springboot2.4.11概述当一个请求过来后Spring是如何进行处理的?下面简单的罗列下请个的过程中核心组件SpringMVC处理的流程:DispatcherServlet所有请求的入口 HandlerMapping将请求地址与处理程序关联 HandlerAdapter真正处理程序,如执行上一步中对应的处理程序 HandlerMethodArgumentResolver对参数进行解析,这里面还涉及到很多其它东西 HanlderMethodReturnValue...
2021-11-02 09:10:11
3933
原创 Springboot默认的错误页是如何工作及工作原理你肯定不知道?
环境:Springboot2.4.11环境配置接下来的演示都是基于如下接口进行。@RestController@RequestMapping("/exceptions")public class ExceptionsController { @GetMapping("/index") public Object index(int a) { if (a == 0) { throw new BusinessException() ; }
2021-10-23 17:09:08
943
原创 Springboot强大的类型转换功能你必须要掌握
环境:Springboot2.4.11Spring3引入了一个core.convert包,它提供了一个通用类型转换系统。系统定义一个SPI来实现类型转换逻辑,定义一个API来在运行时执行类型转换。在Spring容器中,你可以使用此系统作为PropertyEditor实现的替代方案,将外部化的bean属性值字符串转换为所需的属性类型。你还可以在应用程序中需要进行类型转换的任何位置使用公共API。Converter SPI实现类型转换逻辑的SPI是简单且强类型的,如以下接口定义所示:packa
2021-10-17 08:45:37
4026
原创 Springboot API接口统一输出消息格式保持原接口返回值不变
环境:Springboot2.4.11很多时候我们对接口的返回值都会做统一的处理,返回{code, message,data}等信息标识本次请求的处理结果,这统一的处理也都是在各自的Controller上做自行的处理。本篇内容告诉你如何通过ResponseBodyAdvice对象来实现对结果的统一处理,也就是说在Controller上我们不再对返回结果进行处理了,而是由统一的一个ControllerAdice Bean对象进行处理。这对我们的Controller接口来说可读性更强,也业务无关的东西一概不
2021-10-10 10:53:37
606
原创 Springboot强大的数据格式化功能你必须要知道
环境:Springboot2.4.11通常,当需要实现通用类型转换逻辑时,可以使用转换器SPI 例如,用于在java.util.Date和Long之间转换。当你在客户端环境(如web应用程序)中工作并且需要解析和打印本地化字段值时,可以使用格式化程序SPI。ConversionService为两个SPI提供统一的类型转换API。在Springboot环境下如何自定义数据类型的转换?Formatter SPIFormatter SPI 实现字段格式化逻辑非常简单,而且是强类型的。以下列表显示格
2021-09-30 13:53:52
1874
原创 Springboot强大的日志功能你真的了解吗?这些功能你肯定不知道
环境:Springboot2.4.10日志配置详解Spring Boot使用Commons Logging记录所有内部日志,但保留底层日志实现的打开状态。为JUL日志记录、Log4J2和Logback提供了默认配置。在每种情况下,记录器都预先配置为使用控制台输出,还可以使用可选的文件输出。默认情况下,如果使用 “Starters”,则使用Logback进行日志记录。还包括适当的Logback路由,以确保使用JUL日志、Commons Logging、Log4J或SLF4J的依赖库都能正常工作。
2021-09-28 19:10:02
1192
1
原创 Springboot如何动态注册处理请求接口?这个知识点你值得了解一下
环境:springboot2.2.10.RELEASE编写一个准备用来出来请求的方法@Servicepublic class UserHandler { @ResponseBody public Object getUsers(@PathVariable("id") String id, HttpServletRequest request) { System.out.println(request) ; return "查询用户ID为: " + id ; } }
2021-08-09 09:04:44
2189
原创 Springboot中接口参数校验N种方法你会几个?
环境:springboot2.2.10.RELEASESpring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),结合BindingResult对象可以直接获取错误信息。JSR是什么?JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新
2021-08-04 08:58:48
1467
原创 Spring Cloud Gateway应用详解2内置过滤器
环境:springboot2.3.7 + spring cloud Hoxton.SR9路由过滤器允许以某种方式修改传入的HTTP请求或输出HTTP响应。路由过滤器的作用域为特定路由。Spring Cloud Gateway包括许多内置的GatewayFilter工厂。 AddRequestHeader 过滤器工厂 作用:在请求中添加header信息(向目标服务)。对应过滤器工厂AddRequestHeaderGatewayFilterFactory spring: cloud:
2021-07-27 09:09:25
395
原创 Spring依赖注入@Autowried的这些功能你都知道吗?
环境:spring5.2.15@Autowried注解首先根据byType注入,如果有多个的情况会按照byName注入,如果没有符合的名称那么系统将会报错。结合@Qualifier限定注入的Bean。功能1As of Spring Framework 4.3, an@Autowiredannotation on such a constructor is no longer necessary if the target bean defines only one constructor ..
2021-07-23 14:00:34
515
原创 Spring知识点+ 技巧 + 源码
Spring / Spring MVC / SpringBoot / SpringCloud 应用技巧,扩展点,源码解读来啦公众:Springboot实战案例锦集
2021-07-19 09:18:43
88
原创 Springboot编程式事务使用方式详解
环境:springboot2.3.9.RELEASESpring提供两种编程式事务管理方法:使用TransactionTemplate 或 TransactionalOperator 直接创建TransactionManager的实现Spring官方推荐使用TransactionTemplate方式准备// 实体类@Entity@Table(name = "BC_USERS")@Datapublic class Users{ private String username ;
2021-07-13 09:03:37
1643
原创 SpringCloud SpringBoot 源码解读
Spring / Spring MVC / SpringBoot / SpringCloud 应用技巧,扩展点,源码解读来啦公众:Springboot实战案例锦集
2021-07-09 09:27:13
84
原创 Java分布式事务实现Atomikos
先了解X/Open DTP(Distributed Transaction Processing)模型X/Open DTP模型与XA规范X/Open,即现在的open group,是一个独立的组织,主要负责制定各种行业技术标准。官网地址:www。opengroup。org。X/Open组织主要由各大知名公司或者厂商进行支持,这些组织不光遵循X/Open组织定义的行业技术标准,也参与到标准的制定。下图展示了open group目前主要成员(官网截图):针对DTP,X/Open提供了以下参考
2021-07-06 08:55:41
518
原创 Spring Bean的作用域scope你知道多少?如何自定义作用域?
环境:spring5.3.31 Scope作用通过@Scope注解可以指定Bean的作用域,默认情况都是单例的(ConfigurableBeanFactory.SCOPE_SINGLETON=singleton)在创建bean实例时就是根据当前定义BeanDefinition中的Scope来做不同的创建,源码如下:protected <T> T doGetBean( String name, @Nullable Class<T> requi
2021-07-05 08:46:24
248
1
原创 Springboot整合百度开源分布式ID生成器UIDGenerator
环境:sprinboot2.3.12.RELEASE + uid-generator1.0.0简介UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器。UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于docker等虚拟化环境下实例自动重启、漂移等场景。 在实现上, UidGenerator通过借用未来时间来解决sequence天然存在的并发限制; 采用RingBuffer来缓存已生成的UID, 并行化UI
2021-07-02 07:19:00
1111
2
原创 Spring通过源码分析了解这3种Bean处理器的执行过程
环境:Spring5.3.3三种Bean处理器BeanFactoryPostProcessor BeanPostProcessor InstantiationAwareBeanPostProcessor1 BeanFactoryPostProcessor所有Bean在未初始化前执行,同时可以去修改常规Bean的相关定义信息,比如修改Bean的属性信息。准备类:public class CustomBeanFactoryPostProcessor implements BeanFa
2021-06-24 08:58:14
167
1
原创 Spring事务实现原理源码分析
Spring事务实现原理源码分析原创2021-06-14 09:21·FastCoder环境:spring5.3.3先阅读:《Spring IOC容器对Bean实例化的过程详解源码分析》目录:1、开启事务通过@EnableTransactionManagement注解开启事务功能@Configuration@EnableTransactionManagementpublic class AnnoConfig {} @Import(Transaction...
2021-06-22 09:01:30
161
原创 Java Cglib动态代理原理源码分析
环境:Java8Cglib代理使用System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "E://cglib"); Enhancer enhancer = new Enhancer() ;enhancer.setSuperclass(PersonDAOImpl.class) ;enhancer.setCallback(new MethodInterceptor() { @Override public Ob
2021-06-20 11:15:59
525
原创 Springboot中常见的@Import注解的三种使用方式详解
环境:springboot2.3.9.RELEASE三种方法说明 直接导入普通数组的方式 导入ImportSelector类方式 导入ImportBeanDefinitionRegistrar方式 被导入的类加入到Spring IOC容器中。直接导入普通数组的方式public class A { @Bean public B b() { return new B() ; }}@Import({A.class})@Configurati
2021-06-15 09:35:15
732
原创 Spring IOC容器对Bean实例化的过程详解源码分析
环境:Spring5.3.3Spring容器启动时,创建DefaultListableBeanFactory 工厂实例化AnnotationConfigApplicationContext对象public AnnotationConfigApplicationContext(String... basePackages) { this(); scan(basePackages); refresh();}1.1 实例化单例Bean进入refresh方法中的
2021-06-12 07:14:08
230
1
原创 SpringBoot整合MyBatis完全使用注解方式定义Mapper
环境:springboot2.3.11 + MyBatis3.5.6依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.mybatis.spring.
2021-06-09 08:50:19
785
原创 elasticsearch 多条件时间范围查询
{ "query": { "bool": { "must": [ { "match": { "name": "张" } }, { "range": { "settlement_time": { "gte": "2019-01-01 04:00:00", "lte": "2019-01-01 04:59:59", .
2021-06-07 19:22:09
3184
原创 异步编程还在用Future?快来学习下CompletableFuture超级详细
环境:Java8Future基本应用Future是从JDK1.5开始有的,目的是获取异步任务执行的结果,通常情况会结合ExecutorService及Callable一起使用。1、Future结合Callable使用单任务执行private static class Task implements Callable<String> { @Override public String call() throws Exception { TimeUnit.SE
2021-06-05 08:15:59
177
1
原创 Spring AOP动态代理失效的解决方法@Transactional为何会失效
环境:springboot2.3.10演示类JavaBeanpublic class User { private Integer id ; private String name ; public User(Integer id, String name) { this.id = id; this.name = name; }}DAO接口public interface UserDAO { User save(User user) ;
2021-06-04 08:50:31
1177
1
原创 Springboot基础使用@Conditional多条件注册Bean
环境:springboot2.3.10需求:有这么一个Bean它被注册的条件是需要满足多个条件下才能被注册。如下pack: datasource: enabled: true---pack: cache: enabled: true只有在这两个属性都为true时才注册Bean。方法1 @ConditionalOnExpression注解说明:@Retention(RetentionPolicy.RUNTIME)@Target({ ElementTyp
2021-06-01 11:23:00
1079
JPA+Spring+Struts整合实例
2009-01-04
EJBAPI规范文档
2008-11-26
base-client.zip
2020-02-18
EJB3与Struts与Spring整合开发(SSE)
2010-05-18
java_技术参考汇集_超值大礼包
2009-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人