我正在使用 Spring 处理对某个远程服务器的 RMI 调用。构造应用程序上下文并从客户端获取远程调用的 bean 很简单:
ApplicationContext context = new ApplicationContext("classpath:context.xml");
MyService myService = (MyService ) context.getBean( "myService " );
但是,我没有看到将属性传递到配置中的简单方法。例如,如果我想在客户端运行时确定远程服务器的主机名。
理想情况下,我会在 Spring 上下文中有一个这样的条目:
<bean id="myService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://${webServer.host}:80/MyService"/>
<property name="serviceInterface" value="com.foo.MyService"/>
</bean>
并将属性作为参数从客户端传递给上下文。
我可以在上下文中使用 PropertyPlaceholderConfigurer 来替换这些属性,但据我所知,这仅适用于从文件中读取的属性。
我有一个解决这个问题的实现(作为答案添加),但我正在寻找一个标准的 Spring 实现以避免自己滚动。是否有另一个 Spring 配置器(或其他任何东西)来帮助初始化配置,或者我最好查看 java config 来实现这一点?