我无法理解以下snipet。我的意思是发生了什么。谁能解释我发生了什么?
这是片段:
protected NodeService getUnprotectedNodeService()
{
if (this.unprotectedNodeService == null)
{
this.unprotectedNodeService = (NodeService) FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "nodeService");
}
return this.unprotectedNodeService;
}
答案 0 :(得分:3)
它设置this.unprotectedNodeService
如果它尚未设置(并且还返回它...),如果它已经设置,它只返回它。
看起来像是一种缓存机制,可以防止多次调用重型方法
答案 1 :(得分:1)
this.unprotectedNodeService
是
null,查找bean并且
存储在
this.unprotectedNodeService
。this.unprotectedNodeService
从函数返回。这是lazy initialization的一个例子。
答案 2 :(得分:0)
如果未设置unprotectedNodeService
实例变量,则会在“ManagedBean
”键下查找存储在范围内的nodeService
。如果它不存在,它将被创建。它被转换为NodeService
对象并返回,并被设置为实例变量。这必须来自JSF应用程序。查看faces-config.xml
或相关@ManagedBean
注释以查找更多信息。
答案 3 :(得分:0)
这是延迟初始化模式。字段unprotectedNodeService
在首次使用时(而不是之前)初始化。
请注意,此代码不是线程安全的。