Spring的@ComponentScan提供了一个类型安全的basePackageClasses
属性 - 这似乎是一件好事,特别是因为在我正在处理的项目中重命名包这种情况并不少见。文档说:
考虑在每个包中创建一个特殊的无操作标记类或接口,除了被该属性引用之外没有其它用途。
...但没有提供有关此类名称的进一步指导。我想知道是否有任何约定。 package-info.java
已经存在于所有包中(由Checkstyle强制执行) - 本来希望重用它,但遗憾的是Java不允许使用这个名称的类。
(如果不存在这样的标准,可能会考虑PackageInfo
,BasePackage
,PackageMarker
或类似的标准,但如果有的话,我更愿意遵循惯例。)
答案 0 :(得分:9)
还没有答案,必须做出决定,所以这是:
标记类:
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
命名理由:
如果有人能够提供在更加开拓性的背景中使用的标记类的例子,那么仍然会感兴趣...