自定义 Validation 注解

validation_spring_java_800x320

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

自定义校验注解

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

Shiro 导致 Spring 事务失效

shiro_java_800x320

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

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

Shiro 方法上有权限注解的时候才鉴权

shiro_java_800x320

最近参与的新项目 REST API 需要集成 Shiro 权限框架,在集成过程中发现 Shiro 好像只能通过对过滤器指定 Url Path Pattern 的方式针对 URL 进行权限校验。在指定 Filter 的 URL 后,Fitler 会对所有的 URL 进行处理并不会根据需要对 URL 进行略过,但是 API 中并不是所有的接口都需要进行鉴权。

针对这个需求,翻遍了自带的默认过滤器都没有对应合适的 Filter 进行处理,只能自己实现 Filter,好在 Shiro 在扩展方面做得相当不错。本文主要讲述实现一个根据是否有权限注解来进行是否鉴权的方法,在没有 Shiro 权限注解的方法或者类上不进行鉴权。

macOS 精品工具

macOS 下有非常多的有助于提升效率的精品工具,下面收集的是我使用过并且觉得好用的工具列表,随时更新。如果有更好用的推荐也欢迎告知。后面补充下载地址和使用介绍。

Hello Kotlin

kotlin_helloword_800x320

很多人都喜欢从经典的 Hello world 程序开始介绍一门语言。这里我也贴上一个 Kotlin 的 Hello world 程序,虽然同样是运行在 JVM 上的程序,但是看起来与 Java 还是有很大的不同的。

1
2
3
4
5
// helloworld.kt
val name = "Kotlin"
fun main(args: Array<String>) {
println("hello, $name")
}

学习使用Kotlin

kotlin_800x320

最近几天 Kotlin 真可谓备受关注啊。Google 在 Google I/O 大会上宣布 Kotlin 成为 Android 开发官方支持的语音,Kotlin 发布也有好几年了,这次也是备受关注。打算接着这个东风,好好学习一下 Kotlin。

重新开始折腾博客

清空了博客的内容,并重新设置 Hexo,更换了新的主题。原来的 IMoe 博客的内容是从我的 Wordpress 博客 翔腾苍穹 中导出来的。由于 WP 与 Hexo 的差异,导致文章格式混乱分类层级过深,并且文章没有进行首页摘要处理让首页的长度非常之大,严重影响访问的体验。

原来的文章质量并不高,还有不少是从其他博客中转载的,因此博客清空也无所谓了。之前搭建 Hexo 博客只是为了尝尝鲜,这次打算完全使用 Hexo 来写点东西,也好好整理一下自己的知识,总结和归纳也是提升水平的一个非常好的方式。