gpt4 book ai didi

java - @ComponentScan basePackageClasses 有命名约定吗?

转载 作者:IT老高 更新时间:2023-10-28 13:57:38 24 4
gpt4 key购买 nike

Spring 的 @ComponentScan 提供了一个类型安全的 basePackageClasses属性 - 使用起来似乎是一件好事,特别是因为在我正在处理的项目中重命名包的情况并不少见。文档说:

Consider creating a special no-op marker class or interface in each package that serves no purpose other than being referenced by this attribute.

...但没有提供关于此类名称的进一步指导。我想知道这方面是否有任何约定。 package-info.java 已经存在于所有包中(由 Checkstyle 强制执行) - 本来希望重用它,但遗憾的是 Java 不允许使用此名称的类。

(如果不存在这样的标准,我可能会考虑 PackageInfoBasePackagePackageMarker 或类似标准,但如果有的话,更愿意遵循约定.)

最佳答案

还没有答案,必须做出决定,所以这里是:

标记类:

package com.companyname.appname.projectname.package1name;

/**
* Empty marker class used to identify this package when using type-safe basePackageClasses in Spring @ComponentScan.
*/
public class PackageMarker {
// Empty marker class
}

用法:

@ComponentScan(basePackageClasses = {
com.companyname.appname.projectname.package1name.PackageMarker.class,
com.companyname.appname.projectname.package2name.PackageMarker.class,
/* ...etc... */
})

PackageMarker命名理由:

  1. 似乎明智的做法是让所有此类类具有相同的名称,以便轻松识别它们。
  2. 以“Package”开头似乎是明智的(与 package-info.java 相同)。
  3. 以“Marker”结尾似乎是明智的,因为文档引用了“marker class”。
  4. 选择不包含“Base”一词,以免与基类混淆。
  5. 选择不包含“信息”一词,因为它不包含像 package-info.java 那样的任何信息。
  6. 选择不包含任何其他字词(例如“NoOp”),以使其在其他可能的用途中保持活泼和灵活。

如果有人能给出在更具开创性的上下文中使用的标记类示例,我仍然会感兴趣...

关于java - @ComponentScan basePackageClasses 有命名约定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27254556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com