Если вы хотите, чтобы синглеты Guice запускались при запуске приложения, вам необходимо связать их с asEagerSingleton () , иначе они начнутся при первом использовании. Пример кода ::
package com.myapp.myguice;
import com.google.inject.AbstractModule;
public class ApplicationModule extends AbstractModule {
@Override
protected void configure() {
bind(MySingleton.class).asEagerSingleton();
}
}
Синглтон может выглядеть так:
package com.myapp.myguice;
import com.google.inject.Inject;
public class MySingleton {
private String myValue;
@Inject
MySingleton() {
myValue = UnkownAPI.getMyValue();
}
public String getMyValue() {
return myValue;
}
}
Убедитесь, что к вашему проекту / classpath добавлены файлы Guice и Stripes-Guice jar, и что вы настроили свой web.xml следующим образом:
<context-param>
<param-name>Guice.Modules</param-name>
<param-value>com.myapp.myguice.ApplicationModule</param-value>
</context-param>
<listener>
<listener-class>
com.silvermindsoftware.stripes.integration.guice.GuiceContextListener
</listener-class>
</listener>
Если вам нужно добавить синглтон в actionBean, прочитайте: Guice Managed Action Beans . Это будет выглядеть так:
public class MyAction implements ActionBean {
private final MySingleton mySingleton;
@Inject
MyAction(MySingleton mySingleton) {
this.mySingleton = mySingleton;
}
...