5

Spring 几乎提供了我想要的东西。在 Spring 中,您可以简单地使用 @Component 注释类,然后使用“context:component-scan”让 Spring 自动搜索组件。然后稍后您可以创建应用程序上下文并调用 getBean(String, Class) 以获取任何接口或类的实现。

例如,如果我有一个接口“Mp3Service”并且我想注册一个名为“InternetMp3Service”的新实现,我所要做的就是将@Component 注解添加到类定义中。

对我来说,唯一的问题是我想在一个小程序中使用所有这些,所以我得到了一个 java.lang.RuntimePermission 异常,用于权限“accessDeclaredMembers”。我不想签署小程序,也不想为 bean 创建显式配置。

我正在寻找的是一个框架/库,它将在编译/构建时通过注释并创建一个可以在运行时读取的配置。

例如,如果这里没有出现任何问题并且我认为值得麻烦,我可以编写自己的程序来抛出所有类并查找某个注释,然后创建一个 spring xml 配置文件。但是,我认为现在有人可能已经提供了一些东西。

谢谢。

4

1 回答 1

2

这个用例实际上是有道理的,但我敢肯定还没有人实现它。我看到了两种方法:

a) 使用Pluggable 注解处理 API。这里的问题是 Spring 在扫描注解时执行了非常高级的逻辑,您可能必须为注解处理器重新实现它。

b) 使用一个主类来做 Spring 所做的事情(查看 org.springframework.context.annotation.ComponentScanBeanDefinitionParser 的源代码以了解从哪里开始)。将主类连接到 maven 或 ant 构建,使其在编译时自动执行。这里的问题是您必须处理已编译的类,而不是源代码,因此您的 Service Locator 类在编译时将不可用。

于 2011-06-08T16:46:52.323 回答