小编典典

具有身份验证的Spring Boot项目结构

spring-boot

我正在学习Spring Boot及其模块,但我想避免学习不良做法。那么,您能告诉我通常使用什么项目结构吗?

我正在使用此结构:

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

现在我需要实现JWT身份验证,因此有了这些新类:

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

您能告诉我这些课程在哪里存储吗?我有2个主意:

  1. 创建 安全 文件夹并将其放在此处
  2. 像这样将文件拆分到现有文件夹中:CustomAuthFilter.java->配置,CustomUserDetailsS​​ervice.java->服务,CustomEntryPoint.java->配置,CustomJwtService.java->服务,CustomAuthController.java-> web

可以给我一些建议吗?谢谢。


阅读 323

收藏
2020-05-30

共1个答案

小编典典

这是代码组织问题,与Spring Boot无关。

从模块的业务意义/功能而非模块的技术意义出发。如果您需要一段时间,功能意识有助于轻松理解代码。

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

如果功能分散在多个文件中,则将其保留在上面的“ 安全性 ” 子文件夹中。

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

上面的模式通过将一个模块划分为子模块和子模块到它们的子模块来工作。

2020-05-30