Возможно, было бы лучше установить свойство сборки где-нибудь, а не пытаться определить тип вашего приложения, потому что я не думаю, что есть надежный способ сделать это.
Более того, вам не следует пытатьсяопределить тип приложения, потому что ваш уровень представления (веб, рабочий стол или консоль) должен быть легко взаимозаменяемым в соответствии с современными архитектурными принципами.
В ответ на ваш последний комментарий.
Как сказал пользователь 384706, DI - правильный выбор, IMO.Я приведу пример с пружиной.
В обеих частях вашей консоли и веб-приложения вы можете иметь:
public class WebOrConsoleServiceImpl {
private PropertyProvider propertyProvider = new NullPropertyProvider();
// and
public void setPropertyProvider(PropertyProvider impl) {
this.propertyProvider = impl;
}
// and in your service logic
public void logic() {
final Properties props = propertyProvider.loadProperties();
// do stuff
}
}
Где ваш метод loadProperties()
будет переопределен для различных реализаций вашего PropertyProvider
.
И в вашем весеннем контексте вы можете иметь:
<bean id="consolePropertyProvider" class="com.company.ConsolePropertyProvider"/>
<bean id="myConsoleService" class="com.company.MyConsoleService">
<property name="propertyProvider" ref="consolePropertyProvider" />
</bean>
И ту же пару определений бинов для ваших WebService
и WebPropertyProvider
.