Spring Boot 集成 WebSocket

Spring Boot 集成 WebSocket

得益于 Spring Boot 约定大于配置的特性,集成 Websocket 非常简单,只需在依赖中加入对应的 starter 就可完成引入。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

加入 starter 后,websocket 已经完成引入,这时可以使用 @Configuration 类来配置,然后使用 @EnableWebSocketMessageBroker 来启用 WS。

阅读更多
自定义 Validation 注解

自定义 Validation 注解

在 Java 后端的数据校验常用 @NotNull@NotEmpty@Size 等注解进行校验,但标应准的验证注解是很局限的,在一些特殊要求的验证中并不能满足需求。

自定义校验注解

要想实现业务用特定需求的验证只用定义一个注解和对应的校验类既可,下面实现一个非空字符串验证注解。

阅读更多
Shiro 导致 Spring 事务失效

Shiro 导致 Spring 事务失效

前段时间将 Shiro 作为权限模块整合到 Spring 中使用,也发了篇整合相关的文章《Shiro 方法上有权限注解的时候才鉴权》,讲如何实现在有打注解时才校验权限。

在集成后的项目中开发时出现有个 Service 的事务是无效的,@Transactional 注解无任何作用。检查后发现这个 Service 是在 Shiro 的 Realm 类中使用 @Autowired 注入的。

阅读更多
Spring 缓存抽象之基于注解的声明式缓存

Spring 缓存抽象之基于注解的声明式缓存

Spring 提供了一些 Java 注解用于声明缓存。

  1. @Cacheable 用于触发缓存
  2. @CacheEvict 用于失效缓存
  3. @CachePut 可用于在不影响方法运行的情况下更新缓存
  4. @Caching 用于将多种缓存操作应用到一个方法中
  5. @CacheConfig 用于配置同一个类的缓存配置,类中的所有缓存都将共享这个配置
阅读更多
Spring Boot 集成 Caffeine 缓存