实现基于环境的配置

时间:2016-06-23 21:29:06

标签: java spring

我正在开发一个spring web应用程序。该应用程序使用Stripe API来处理付款处理。简而言之,我希望了解这两种配置Stripe的方法中的哪一种。根据应用程序是“实时”还是“生产”,您可以使用不同的公钥和私钥作为Stripe配置的一部分。我正在考虑这两种方法。使用个人资料是否会过度?

使用Spring Profiles:

@Configuration
@Profile("live")
public class StripeConfigLive{

    @Bean
    public MyStripeOperationsHandler getStripeOpsHandler() {
       return new MyStripeOperationsHandler(livePrivKey, livePubKey);
    }

}



@Configuration
@Profile("dev")
public class StripeConfigDev{

    @Bean
    public MyStripeOperationsHandler getStripeOpsHandler() {
       return new MyStripeOperationsHandler(devPrivKey, devPubKey);
    }

}

@Controller
public class MyController {

   @Autowired
   private MyStripeOperationsHandler stripeOperationsHandler;

   //use the handler to respond to requests

}

或者,只需将运行模式指定为web.xml中的上下文参数:

    public class MyController implements ServletContextAware {

        private MyStripeOperationsHandler stripeOperationsHandler;

        private ServletContext servletContext;

         @PostConstruct
         public void init() {
            RunMode runMode = RunMode.valueOf(servletContext.getInitParameter("runMode"));

            switch (runMode) {
            //init the MyStripeOperationsHandler 
            }

         }

         @Override
         public void setServletContext(ServletContext servletContext) {
            this.servletContext = servletContext;
         }

     //use the handler to respond to requests

    }

1 个答案:

答案 0 :(得分:0)

我建议您使用' Spring Profile'。因为如果明天你想要增强功能,比如使用不同的数据源'对于不同的环境,您可以使用相同的技术(弹簧剖析)来实现多种目的。