我们正在开发一个带有spring框架的项目。 我们正在使用一个tomcat集群,为了进行一些非常高级的集成测试,我们在Web应用程序中添加了一些控制器,这些控制器允许一些无法达到生产的风险。
我们学到的是,为了做到这一点,我们可以使用弹簧配置文件并注释风险控制器,如
@profile("Staging")
此注释确保仅在活动配置文件为" Staging"时才会创建bean。
叫我偏执,但这个有风险的代码现在驻留在我们的svn上,并且是项目代码的一部分。 似乎最轻微的错误可能导致此代码成为生产的一部分,并允许剥削者采取冒险行动。
此外,如果一些程序员忘记注释代码将肯定到达生产。 我们都犯错误。
此问题是否有任何缓解措施?
答案 0 :(得分:0)
我的建议:将所有有风险的代码保存在一个模块中(如果您使用的是多模块构建)。不要在生产版本中包含此模块(您可以使用maven配置文件)
或..让代码检查自己是否允许运行。也许它可以检查您只在测试环境中创建的文件系统上是否存在某个文件。
这实际上取决于你担心的事情。
但考虑一下是件好事。我知道负载测试导致许多订单被放置在实际(外部)订单处理系统中的故事。
答案 1 :(得分:0)
您所说的错误是将staging
添加到活动配置文件列表中。是的,很容易做到这一点。但是,很容易从文件系统格式中删除硬盘中的文件并关闭电源。所以,你的问题听起来真是一种偏执......:)
我认为问题不在于Spring配置文件,而在于您的开发方法。如果你不确定某些代码,它根本就不应该在生产中。怎么做到这一点?从svn转到git。并开始使用分支机构。每个任务都是一个分支。没有例外。必须测试每项任务。因此,您可以部署要分段的每个分支,对其进行测试以及何时确定代码可以合并/将其重新绑定到主分区。 Master也应该进行测试,然后可以部署到生产中。
在这种情况下,您不需要个人资料" staging"。