Не добавляйте логику в свой код, чтобы проверить, в какой среде вы работаете - это рецепт катастрофы (или, по крайней мере, сжигания большого количества полуночной нефти в будущем).
Вы используетеВесна, так что воспользуйтесь этим.Используйте внедрение зависимостей, чтобы предоставить специфичные для среды параметры вашему коду.Например, если вам нужно вызвать веб-сервис с разными конечными точками в тестовом и производственном режиме, выполните что-то вроде этого:
public class ServiceFacade {
private String endpoint;
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
public void doStuffWithWebService() {
// use the value of endpoint to construct client
}
}
Далее, используйте Spring * PropertyPlaceholderConfigurer (или, альтернативно, PropertyOverrideConfigurer), чтобы заполнить этосвойство из файла .properties или из системного свойства JVM, например:
<bean id="serviceFacade" class="ServiceFacade">
<property name="endpoint" value="${env.endpoint}"/>
</bean>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:environment.properties</value>
</property>
</bean>
Теперь создайте два (или три, или четыре) файла, например, по одному - для каждой из различных сред.
В environment-dev.properties:
env.endpoint=http://dev-server:8080/
В environment-test.properties:
env.endpoint=http://test-server:8080/
Теперь возьмите соответствующий файл свойств для каждой среды, переименуйте его вenvironment.properties и скопируйте его в каталог lib вашего сервера приложений или куда-то еще, где он появится в пути к классам вашего приложения.Например, для Tomcat:
cp environment-dev.properties $CATALINA_HOME/lib/environment.properties
Теперь разверните свое приложение - Spring заменит значение "http://dev -server: 8080 /", когда оно устанавливает свойство конечной точки во время выполнения.
См.документы Spring для получения дополнительной информации о том, как загрузить значения свойств.