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

时间:2018-02-03 16:14:11

标签: java spring spring-mvc spring-boot spring-security

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

我正在使用这种结构:

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用于处理异常
  • 用于管理jwt令牌的CustomJwtService.java
  • CustomAuthController.java用于其他端点,例如/ login,/ logout,/ create-user,/ reset-password

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

  1. 创建安全文件夹并将其放在一起
  2. 将文件拆分为现有文件夹,如:CustomAuthFilter.java - > config,CustomUserDetailsS​​ervice.java - > service,CustomEntryPoint.java - > config,CustomJwtService.java - > service,CustomAuthController.java - >网络
  3. 你能给我一些建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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