What a Life

「Live for yourself」

对DDD的一点理解

DDD分层架构是什么? 4层架构:由下往上,基础层 -> 领域层 -> 应用层 -> 用户接口层 领域层和应用层的区别是什么? 从底往上逐层讲。 单个实体自身的方法就是实体本身的业务行为。多个实体可组成更复杂的业务动作,这个是领域服务,实体的方法和领域服务共同构成领域模型的基础业务能力,这个能力是原子的基础的,不太考虑外界的用户行为和流程。 而应用服务是对...

对Java回调的一点理解

首先解释一下何为回调? 我的理解是原本是A调用B,在方法执行过程中B又会调用由A提供的一个方法,故称回调。好处是可以让调用方来决定部分算法逻辑,这让整个算法变得非常灵活,但是控制权还是在提供方这边。 Spring的 JdbcTemplate 就是回调的典型实现,摘取 queryForObject() 进行分析 1 2 3 4 public <T> T queryForObj...

让Spring事务支持同一个类的内部调用

问题:当同一个类中的方法A调用方法B时,即使两个方法都打上了@Transactional注解,方法B的事务也不会生效。 原因:默认情况下Spring事务是基于代理的,也就意味着获取到的service对象是代理后的对象(class com.sun.proxy.$Proxy,基于接口的情况)。当外部调用该对象上的方法时,经过aop加上的事务逻辑后,最终会进入到目标对象(即原始的service对...

Java 如何正确地输出日志

转自: 作者:蒋老湿 链接:https://juejin.cn/post/6844903678290165773 什么是日志 简单的说,日志就是记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题。 我们 Java 程序员在开发项目时都是依赖 Eclipse/ Idea 等开发工具的 Debug 调试功能来跟踪解决 Bug,在开发环境可以这么做,但项目发布到了测试...

Java泛型

转自: 作者: frank909 https://blog.csdn.net/briblue/article/details/76736356 泛型,一个孤独的守门者。 大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑...

dockerfile打成docker上传到linux后运行报sh脚本找不到的错误

之前遇到一个奇葩错误, 本地dockerfile打成docker上传到linux后(使用的是docker-maven-plugin),docker run imageID 一直报 ./run.sh not found 的错误。 dockerfile如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 FROM openjdk:8-jdk-alpine RUN sed...

shiro源码分析三

这一篇主要通过2个流程,一个登录流程和一个登陆成功后的访问流程来看下 subject 的创建过程。因为subject 是 shiro 的核心,搞懂了它的创建过程,基本就搞懂了 shiro 的核心逻辑。(这一部分代码是基于传统表单验证的,不是基于JWT的) 登录流程 从前两篇得知,每次请求 shiro 都会创建一个 subject。我们直接从 shiroFilter...

shiro源码分析二

现在有个问题,当token认证通过以后,subject.isAuthenticated() = true 并且 subject.principal() 不为null,这一步操作是在哪里做的? 回到源代码 JWTFilter 中,当我们带token访问时进行到这一步 跟进去 它就是把token取出来,构造出JWToken,然后调用subject.login(token) 方法进行...

shiro源码分析一

shiro本质上是基于一系列filter的,根据不同的路径进入不同的filter,进行不同的逻辑处理,并决定是否要继续执行下一个filter。 因此我们就可以控制整个应用程序的流转。(默认的在 DefaultFilter 中共12个) 下面简单理一下shiro的执行逻辑: 因为shiro是基于filter的,我们先理一下它的filter的类结构。 在Shiro...

log4j2打印彩色日志

先贴一份简单的log4j2配置: 使用 %highlight{} 即可打印出彩色日志,但是自log4j 2.10版本以后该功能默认是关闭的,所以要给它打开。 在 VM options 中添加 -Dlog4j.skipJansi = false即可。 详见官方文档 具体使用方法和默认值在 https://logging.apache.org/log4j/2.x/manual/l...