這可能是最好設置一個構建屬性的地方而不是試圖檢測到您的應用程序類型,因爲我不認爲這是一個可靠的方法來做到這一點。
而且你不應該試圖檢測應用類型,因爲你的視圖層(無論是Web,桌面或控制檯)應根據現代建築原理很容易互換。
迴應您的上次評論。
正如user384706說DI是正確的選擇在這裏IMO。 我會舉一個春天的例子。
在您的控制檯和Web應用程序的部分都可以有:
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
的不同實現。
而在你的Spring上下文,你可以有:
<bean id="consolePropertyProvider" class="com.company.ConsolePropertyProvider"/>
<bean id="myConsoleService" class="com.company.MyConsoleService">
<property name="propertyProvider" ref="consolePropertyProvider" />
</bean>
而同一對bean定義爲您的WebService
和WebPropertyProvider
。
我希望有相同的代碼,但它不工作。我提出的一個關於加載屬性的例子是我的問題之一。如果我知道應用類型,那麼我可以把正確的代碼,否則我不知道該怎麼做:( – tecfield
你不能設置一個構建屬性的地方?你如何建立你的項目?蟻?maven?手動?在任何情況下,你應該有一些構建文件?在該文件中,你可以添加諸如deployment.type = [web | console | desktop]之類的東西,然後根據您的部署更改該值。這是檢測應用程序類型IMO – Simeon
這是同一個項目,不能這樣做! – tecfield