我有一个名为'UserWS'的有状态会话bean。在'UserWS'的构造函数中,我编写了类的toString()。
public UserWS() {
System.out.println("In constructor:" + this.toString());
}
有些观点我不清楚:
In constructor: ws.UserWS$Proxy$_$$_WeldClientProxy@22c9b87b In constructor: ws.UserWS$Proxy$_$$_Weld$EnterpriseProxy$@50933ff8 In constructor: ws.UserWS@303709bb In constructor: ws.UserWS$$$view2@6872a8eb In constructor: ws.UserWS$$$view2@4e75aedd In constructor: ws.UserWS@53c4e19d
toString()
的结果中'$'或'$ Proxy'的含义是什么?答案 0 :(得分:1)
当EJB或CDI等Java框架与您编写的类一起使用时,框架必须基于您的类生成额外的类,这些类提供诸如注入,安全或事务之类的服务。通常这些将类似于代理拦截来自客户端代码的方法请求,添加额外的服务,然后在原始类中调用该方法。
在您的输出中,您对UserWS
类的构造函数进行了2次实际调用,其余的是生成的类,这些类具有至少部分从UserWs
构造函数复制的构造函数。 '$'只是Weld用来命名这些类的惯例的一部分。
您可以通过Weld here
找到有关如何生成这些内容的详细信息