我现在使用wicket几个月了,最近我开始躲避wicket-guice。 所以我是一个非常好的noobie:)
每个页面都有一个ServiceClass(让我们称之为DoService),它管理着许多对象(即用户)...... 由于某些原因,这些对象也引用了该ServiceClass。
public class page ... {
@Inject
private DoService doService;
}
public class DoService ... {
private Collection<User> ...
}
public class User {
@Inject
private DoService doService;
}
我不太确定,但我认为以下异常会导致依赖的循环引用,但我认为guice会自己管理这一切。
无论如何.....如果您需要更多信息来了解我的问题请问:)
提前致谢
java.lang.StackOverflowError
at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:54)
at WICKET_....DoService$$FastClassByCGLIB$$ce256f9.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:317)
at WICKET_....DoService$$EnhancerByCGLIB$$d1f8934e.rollback(<generated>)
at WICKET_c....DoService$$FastClassByCGLIB$$ce256f9.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
......
答案 0 :(得分:2)
我认为您的设计不正确:域对象不应包含对服务的引用。你确实有一个循环依赖。
答案 1 :(得分:0)
Guice在这里做的是为每个DoService实例创建一个新的User实例,为每个User实例创建一个新的DoService实例。我不认为你想在这里存档(除了有问题的设计)。 有几种方法可以解决这个问题: