相关疑难解决方法(0)

在运行时扫描Java注释

搜索带注释类的整个类路径的最佳方法是什么?

我正在做一个库,我想允许用户注释他们的类,所以当Web应用程序启动时,我需要扫描整个类路径以获取某些注释.

你知道一个库或Java工具吗?

编辑:我正在考虑类似Java EE 5 Web服务或EJB的新功能.您使用@WebServiceor 注释您的类,@EJB并且系统在加载时查找这些类,以便远程访问它们.

java annotations classloader

243
推荐指数
10
解决办法
16万
查看次数

如何动态配置@ComponentScan?

@ComponentScan(  //CS1\n    basePackages = {"com.package.A", "com.package.B"},\n    excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,\n                                           value = {com.Package.A.SomeClass.class\n                                           })\n)\n\n@ComponentScan(  //CS2\n    basePackages = { "com.package.A"}\n)\n@EnableAutoConfiguration\n@SpringBootApplication\npublic class Application {\n  public static void main(String[] args) throws Exception {\n    ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面是我的SpringBootApplication主要课程。正如你所看到的,我必须使用 Annnotation,而不是 xml。有两个@ComponentScanAnnotation,当然Spring是不允许的。对我来说,这两种不同@ComponentScan意味着两种不同的方式来启动我的应用程序。如果我选择使用 CS1(这意味着 @ComponentScan1),我必须注释 CS2\xef\xbc\x8can,反之亦然。

\n\n

它不优雅,不优雅。尤其是对于那些 Spring 新手。所以我想知道如何根据我的.properties文件动态配置它。例如我的.properties文件中名为“isScanA”的参数是true,那么我可以使用CS1。或者任何其他优雅的方式。

\n\n

我已经尝试了很多。

\n\n
    \n
  1. 使用占位符。例如@ComponentScan(basePackage="${scan.basePackage}")。并在需要时更改.properties文件中的值。但这种方法无法修复excludeFilters。因为如果我用来FilterType.ASSIGNABLE_TYPE分配需要排除的类,则value应该是Class类型而不是String,如果value = {"${scan.excludeClass}"}使用的话。

  2. \n …

java spring spring-annotations component-scan

2
推荐指数
1
解决办法
8612
查看次数