Spring配置类的放置最佳实践

5

我使用配置类(Java类带有@Configuration注释)来配置我的bean。通常情况下,我想避免使用成见的注释(例如@Service@Component)以及组件扫描整个项目。

是否有任何最佳实践可以指导配置类放置的位置?以下是一些不同的设置:

  • 将配置类放在模块根级别的单独包中
- src
 - config
  - SomeServiceConfiguration.class
 - dao
 - controller
 - service
  - SomeService.class

SomeServiceConfiguration中注册SomeService bean。我的最大问题是您失去了使用可见性修饰符的机会。为了构造bean,每个类都必须在每个包中公开,这对于更大的项目可能会很糟糕。优点是我可以只扫描config包来注册我的beans。

  • 将配置类放在要注册的类的同一个包中
- src
 - dao
 - controller
 - service
  - SomeService.class
  - SomeServiceConfiguration.class

这样可以使用可见性修饰符,但是管理配置文件会变得棘手。您的配置文件现在遍布整个应用程序,您将不得不花更多的精力来管理它们。尽管我开始认为这可能是比较好的方法。
社区是否有任何首选方法?哪种方法适用于大型项目?哪种方法的可伸缩性最好?请注意,我不想使用刻板注释。

组件扫描整个应用程序有什么问题? - kenny_k
应用程序启动较慢,主要是针对大型项目而言。 - Krisz
如果您关心应用程序的启动速度以进行自动扩展,我建议您研究@ComponentScan(lazyInit = true)@Lazy。在开发过程中,您只需查找注释以确定不同组件的内容/位置,而不是阅读初始化这些组件的过程代码,这样可以节省很多时间。特别是对于大型项目来说,这一点尤为重要 ;) - kenny_k
据我所知,这个问题也源于它只是在查找组件/配置类时会遍历每个类文件,这不会通过延迟Bean初始化来解决。 - Krisz
1个回答

1
但是管理配置文件变得很麻烦。您的配置文件现在散布在整个应用程序中,您将需要投入更多的精力来管理它们。
不同意。如果您知道必须修改特定控制器bean的定义,则知道要查找的位置--> controller/config 这可能取决于您拥有的bean数量...您应该避免具有许多bean定义的大类...因此,根据这一点,拆分还是不拆分会更好...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接