目前我们有 6 个 Maven 模块:
webappsecuritycore(提供对数据库的访问User)commonmodule1module2
我认为依赖树非常明显:
webapp取决于一切security取决于核心core取决于共同点common不依赖任何东西module1取决于核心和共同点module2依赖于core、module1和common
现在我想要一些BaseEntity:它应该有一个@PrePersist保存当前的User. 几乎每个实体都会使用它BaseEntity。这就是为什么每个模块都依赖于core.
而且因为一切都取决于core,所以将它BaseEntity也放在core模块中似乎是合乎逻辑的。(即使我更愿意使用common它,但由于依赖关系,这似乎是不可能的)。
现在问题出现了:要设置当前用户,我必须使用 access SecurityContextHolder.getContext().getAuthentication().getPrincipal()。但是有了这个我会有一些不必要的依赖(或者我只是太挑剔了吗?)。
如果我想要自定义实现UserDetails. 我应该把它放在哪里?core还是security?或者只是让User实体实现是很常见的UserDetails?我不这么认为。问题出现了,因为在对用户进行身份验证时,我必须在模块UserDetails内创建对象。security当我想检索当前User我必须将getPrincipal()方法转换为自定义UserDetails类。
我真的很困惑如何让事物保持松散耦合,但同时也实现了应用程序所需的一切。
我想到的最后一个想法是关于使用依赖注入,但我不知道它是否有效!?(在模块中有一个currentUserBean security,其他人可以简单地通过 获取它@Autowired MyCustomUserDetails)
所以请帮助我把这些事情做好!
谢谢!:)