当应用程序以条纹启动时,我已阅读有关加载变量的答案
KDeveloper 建议使用 Guice 来加载单例对象,而不是他指定的其他技术。我已经使用 Guice 加载了变量。但是我无法在应用程序启动时加载变量。我不希望在发生新连接时加载变量。我想要一个条纹 + guice 具体的答案。
有没有人可以帮助我?提前谢谢各位。
当应用程序以条纹启动时,我已阅读有关加载变量的答案
KDeveloper 建议使用 Guice 来加载单例对象,而不是他指定的其他技术。我已经使用 Guice 加载了变量。但是我无法在应用程序启动时加载变量。我不希望在发生新连接时加载变量。我想要一个条纹 + guice 具体的答案。
有没有人可以帮助我?提前谢谢各位。
如果您希望 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;
}
}
确保您已将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;
}
...