[英]Multiple Global Settings for Play 2
我可以為Play2使用兩個全局設置對象嗎?
我知道application.conf中只有可用的設置。
global=common.GlobalOne
兩個全局類:
public class GlobalOne extends GlobalSettings {
@Override
public void onStart(Application app) {
Logger.info("****** Set something ******");
}
}
public class GlobalTwo extends GlobalSettings {
@Override
public void onStart(Application app) {
Logger.info("****** some other ******");
}
}
我要問的原因是要播放2個模塊。 如何在模塊中具有全局設置對象,以便在項目使用它時可以啟用它?
那不可能 GlobalSettings
適用於應用程序,不適用於模塊。 因此,模塊不應定義GlobalSettings
對象。
我使用這種方法在根Global.java中合並多個Global對象:
0)文件夾結構:
/root
/app
Global.java
/conf
application.conf
/subprojects
/user
/app
/globals
UserGlobal.java
/admin
/app
/globals
AdminGlobal.java
1)將所有子項目Global類放入globals包中:
package globals;
public class UserGlobal extends GlobalSettings
{ ... }
2)將配置變量添加到所有子項目conf文件中,例如
application.global= globals.UserGlobal
3)在根Global.java中添加私有字段和私有方法:
private List<GlobalSettings> subprojectGlobals = new ArrayList<>();
private void LoadSubprojectGlobals(Application app)
throws ClassNotFoundException, IllegalAccessException, InstantiationException
{
Reflections reflections = new Reflections("globals");
Set<Class<? extends GlobalSettings>> subprojectGlobalClasses =
reflections.getSubTypesOf(GlobalSettings.class);
for(Class subprojectGlobalClass : subprojectGlobalClasses)
{
subprojectGlobals.add(
(GlobalSettings)subprojectGlobalClass.newInstance()
);
}
}
4)將此類代碼放入根Global.java中的 onStart事件處理程序中:
@Override
public void onStart(Application app)
{
try
{
LoadSubprojectGlobals(app);
}
catch(Exception e)
{
new RuntimeException(e);
}
for(GlobalSettings subprojectGlobal: subprojectGlobals)
{
subprojectGlobal.onStart(app);
}
}
現在,如果您添加一些新的子項目,則必須遵循一些有關添加Global類的約定,但是無需為合並功能而進行任何修改。
如果要處理更多全局設置,則需要在根Global.java中覆蓋適當的方法。
這是我關於這個問題的問題。
我有一個項目拆分為main->frontend->common
和main->backend->common
依賴項。 在每個(通用,前端和后端)中,我都有一個GlobalSetting。 我需要這個來運行測試。
是的,這是不可能的,因為當您發出請求時,播放框架引擎將啟動並為當前應用程序找到Global.java;或者,如果找不到它,您可以說出Action方法,否則它將跳過該.So,底線是擴展GlobalSettings的類名應該是Global.java
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.