有条件地在春天创造豆类

时间:2012-02-12 10:54:20

标签: java spring deployment

现在我正在使用spring remoting的RMI / SOAP / JMS / Hessian / Burlap / HttpInvoker出口商公开我的应用程序的服务层。我想要的是允许用户以某种方式定义他们想要启用哪些远程处理机制(而不是启用所有这些),然后只创建那些导出器bean。

我希望spring的应用程序上下文xml支持在xml的部分区域内放置条件块。然而,从我到目前为止看到的标准弹簧分布中没有任何内容可以让你做这样的事情。

还有其他方法可以实现我的目标吗?

3 个答案:

答案 0 :(得分:6)

我将假设您正在根据您的环境配置您的应用程序,例如......对于生产我想要使用这个bean,在开发这些其他...

正如Ralph所说,从Spring 3.1开始,你就拥有了个人资料......但关键是,你明白你应该将基于环境的bean放在不同的配置文件中......所以你可以拥有像dev-beans这样的东西。 xml,prod-beans.xml ...然后在你的主spring文件中,你只需根据你正在使用的环境调用适当的...所以配置文件只是这样做的技术...但你也可以使用其他技术,比如拥有系统环境变量,或者在构建中传递参数来决定要使用哪些bean

答案 1 :(得分:3)

您可以通过使用Spring @Configuration bean来实现这一点,因此您可以在java代码中构建bean。 (见http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-java

@Configuration
public class AppConfig {
  @Bean
  public MyService myService() {
      if ( userSettingIshessian ) {
          return new HessianExporter();
      }else {
          return new BurlapExporter();
      }
  }
}

当然,你需要从某个地方获取用户设置,系统参数很容易,或配置文件或其他东西。

答案 2 :(得分:1)

Spring 3.1具有Profiles的概念。我可以使用它们。