具有身份validation的Spring Boot项目结构

我正在学习Spring启动及其模块,但我希望避免学习不良实践。 那么你能告诉我通常使用什么项目结构吗?

我正在使用这个结构:

com +- example +- myproject +- Application.java | +- config | +- CustomSecurityConfig.java (extends WebSecurityConfigurerAdapter) | +- domain | +- Customer.java | +- repository | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web +- CustomerController.java 

现在我需要实现JWT身份validation,所以我有了新的类:

  • 用于安全filter链的CustomAuthFilter.java
  • AuthenticationManager的CustomUserDetailsS​​ervice.java
  • CustomEntryPoint.java用于处理exception
  • 用于管理jwt令牌的CustomJwtService.java
  • 用于其他端点的CustomAuthController.java,如/ login,/ logout,/ create-user,/ reset-password

你能告诉我这个class的哪个店吗? 我有两个想法:

  1. 创建安全文件夹并将其放在一起
  2. 将文件拆分为现有文件夹,如:CustomAuthFilter.java – > config,CustomUserDetailsS​​ervice.java – > service,CustomEntryPoint.java – > config,CustomJwtService.java – > service,CustomAuthController.java – > web

你能给我一些建议吗? 谢谢。

这是代码组织问题,与spring boot无关。

通过模块的商业意识/function,而不是模块的技术意义。 如果您需要一段时间,那么function感将有助于您轻松理解代码。

 +Application.java +security/ +-CustomAuth +-CustomJwtSevice 

如果function分散在多个文件中,则将它们保存在子文件夹中,如上面的“ 安全性 ”。

 +Application.java +security/ +-auth/ +--token/ +---JWTtokenGenerator.java +---JWTutil.java +--configuration/ +---SecurityConfig +---... +--customer/ +---customerservice.java +---customerrepo.java 

上述模式通过将模块,子模块和子模块划分为其子模块来实现