gpt4 book ai didi

Java - 使用注解自动实现服务定位器模式

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:38 25 4
gpt4 key购买 nike

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

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

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

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

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

谢谢。

最佳答案

这个用例实际上很有意义,但我敢肯定还没有人实现过它。我看到了两种方法:

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

b) 使用主类来完成 Spring 的工作(查看 org.springframework.context.annotation.ComponentScanBeanDefinitionParser 的源代码以了解从哪里开始)。将主类连接到 maven 或 ant build 以使其在编译时自动执行。这里的问题是您必须处理已编译的类,而不是源代码,因此您的服务定位器类在编译时将不可用。

关于Java - 使用注解自动实现服务定位器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6281897/

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