Java 谷歌Guice+;战略模式+;反射

Java 谷歌Guice+;战略模式+;反射,java,reflection,dependency-injection,guice,Java,Reflection,Dependency Injection,Guice,我熟悉GoogleGuice,至少是基础知识。我现在使用带有注释(应答)的策略模式来根据目标设备格式化消息 我有一个叫做MessageFormatter的接口 public interface MessageFormatter{ public String format(String input); } 我有很多这个接口的实现。基本上,这些实现是基于目标显示(大屏幕、手机等)格式化短消息的。消息是从另一台服务器获取的 我想做的是将格式化程序从一台服务器发送到另一台服务器。发送格式化程序

我熟悉GoogleGuice,至少是基础知识。我现在使用带有注释(应答)的策略模式来根据目标设备格式化消息

我有一个叫做MessageFormatter的接口

public interface MessageFormatter{
    public String format(String input);
}
我有很多这个接口的实现。基本上,这些实现是基于目标显示(大屏幕、手机等)格式化短消息的。消息是从另一台服务器获取的

我想做的是将格式化程序从一台服务器发送到另一台服务器。发送格式化程序是指发送MessageFormatter接口的实现。我已经知道如何使用反射在运行时加载类并使用它


我需要做的是在运行时插入这些实现,让容器知道这些新类,注入它们而不是旧类。Google Guice可以做到这一点吗?

Guice对OSGi有第三方支持,这将允许使用Guice插入运行时动态变化的服务。有一些OSGi容器可以监视您的文件系统,以查找包含要加载的其他类文件的新包(例如)

这里有一些额外的资源


你说的“另一台服务器”是指不同的JVM?我认为通过网络发送
.class
文件并动态加载会有点麻烦。我更愿意通过使用格式化程序创建一个不同的Java项目来模块化应用程序,并将其添加为服务器的依赖项。是否需要动态加载格式化程序?格式化程序是我最喜欢的项目,可以与依赖项注入模式相结合来测试这是否可行。真正的项目是关于p2p分布式加密算法;)是的,这是一个要求。我知道这个问题是关于Guice的,但我必须说,在运行时动态添加服务是HK2()非常擅长的(如果需要,还可以动态删除它们)。例如,HK2总是在GlassFish中动态添加和删除asadmin命令行服务的实现,那么将
MessageFormatter
作为OSGi服务公开呢?您可以动态地重新部署
MessageFormatter
。Guice应该通过PeaBerry很好地使用OSGi,你的回答很清楚。我以前从未听说过OSGi。我今天努力工作使它工作,而且它确实工作。谢谢你的提示