问题标签 [lazy-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6980 浏览

c# - 为什么懒惰受限于静态上下文?

我想使用Lazy T来实现记忆,但初始化函数似乎需要静态上下文。

例如,以下代码拒绝编译,警告非静态成员ab不可访问。我不清楚为什么会这样,因为Lazy对象本身就是一个实例成员,并且在静态上下文中没有可见性。

0 投票
2 回答
1696 浏览

java - 有没有人有一个很好的模式来初始化另一个spring bean?

我的系统中不断出现一种情况,我正在寻找一个好的代码/配置模式。我还没有想出一个让我开心的。

该系统是基于弹簧的,几乎所有的 bean 都是延迟初始化的。有许多不同的主类使用相同的弹簧上下文。每个最终都会通过显式初始化一些 bean 来使用不同的 bean 子集,然后 spring 负责初始化所有依赖项。除了这种情况外,一切都很好。

问题是我的一些 bean 使用一种模式(在 spring 配置中),在该模式中声明了我的业务 bean,然后另一个 bean 依赖它并提供一些外围功能。但是,其他bean的自然依赖是前者,即业务类。

这是一个例子:

因此,上面的第二个 bean 基本上向调度程序注册了一个触发器,这将导致第一个 bean 上的方法被定期调用。请记住,所有这些 bean 都是懒惰的。如果没有活动的“缓存”客户端 bean,我不想创建“cacheCuller”并初始化“缓存”。我希望spring在需要将其注入依赖项时初始化“缓存”(这很容易),但我也希望它在之后立即初始化“cacheCuller”(这很难)。

我知道我可以将调度逻辑放入“缓存”类中,但我认为将其保留在 spring 配置中会很好。我还想让“缓存”类没有特定于 spring 的代码。如果其他 bean 自然地依赖于“cacheCuller”,这会很容易,但他们不会。

其他领域也会出现同样的情况,例如向 MBeanServer 注册 bean。我想让第二个 bean 注册业务 bean,但如果它不被用作其他(第三个)bean 的依赖项,我不希望它来初始化业务 bean 本身。

0 投票
2 回答
450 浏览

c# - 通过反射初始化的对象的延迟初始化

我有自己[Finder]的字段和属性属性,并且我有一种工厂,可以根据需要初始化所有字段和属性。问题:我想对正在初始化的对象进行某种惰性初始化(仅当我调用该对象的某些方法时才创建对象)。注意:属性和字段可以是不同的类型。

0 投票
2 回答
843 浏览

json - Struts2 网格 json

如何排除列为 FetchType.LAZY 的 Hibernate 对象?它会导致问题,因为我得到一个 org.hibernate.LazyInitializationException。我知道它正在尝试序列化对象并且它不能因为会话已关闭。我怎样才能禁用它?我有很多对象可以做到这一点,因为它们太多了,所以让它们渴望或删除它们是不可行的。请帮忙。

0 投票
3 回答
2511 浏览

java - 按需初始化习语与单例实现中的简单静态初始化程序

在使用静态初始化实现线程安全的单例时,Initialize-On-Demand 习语真的有必要吗,还是一个简单的实例静态声明就足够了?

将实例简单声明为静态字段:

对比

我问这个是因为 Brian Goetz 在本文中推荐了第一种方法:

http://www.ibm.com/developerworks/java/library/j-dcl/index.html

而他在本文中建议后者

http://www.ibm.com/developerworks/library/j-jtp03304/

后一种方法是否提供了前一种方法没有的任何好处?

0 投票
1 回答
861 浏览

c# - 懒人有什么优势提供超过标准的惰性实例化?

考虑这个例子,它展示了两种可能的延迟初始化方式。除了线程安全之外,在这里使用 Lazy<T> 是否有任何特定的优势?

更新:

请把上面的代码当作一个简单的例子,数据类型无关紧要,这里的重点是比较惰性 <T> 和标准惰性初始化。

0 投票
1 回答
705 浏览

java - Spring中的Json错误

我试过这个:

}

调用 getmainsubjects.html?id=1 时出现错误:

net.sf.json.JSONException: org.hibernate.LazyInitializationException: 延迟初始化角色集合失败:fi.utu.tuha.domain.Mainsubjects.aiForms,没有会话或会话被关闭

怎么修?

0 投票
2 回答
2340 浏览

java - 过滤 JPA 实体而不将它们从数据库中删除

我有一个数据库表“viewmodule”,它本身有一个 FK(parent_id),以允许递归结构。

我的 Java 应用程序使用 JPA/Hibernate 来映射该表上的实体。我们已经修复了实体层级问题,这是通过使用表的“类型”列的@Discriminator 注释来解决的。

我现在的任务是加载该表中的所有元素(深入),但忽略那些将“隐藏”字段设置为 true 的元素。它显然是一个简单的过滤机制。我的第一种方法是使用 Hibernate Filter 注释,它在第一层(所有具有 parent_id = null 的视图模块)上运行良好。但过滤器不适用于“孩子”关系。(在我的现实生活模型中,我有不同类型的 ViewModules 的继承结构)

因此,我编写了一个小函数,递归遍历 viewModule 对象树,并从具有 hide=true 的子关系中删除 viewModules;

但是,由于所有对象仍处于 jpa/hibernate entityManager 的观察之下,因此从集合中删除的每个操作都直接作为数据库中的删除执行。所以我的过滤功能从数据库中删除了实体,这是一件坏事。

我尝试使用休眠会话中的“驱逐”方法在过滤之前分离实体,但这会导致 LazyInitialisationException。

所以,为了防止克隆我的所有对象,我的问题是如何解决这个问题?有没有办法以初始化所有集合的方式分离对象?或者是否有可以过滤集合的特殊 Kung-Fu Chuck-Norris JPA 注释?

提前致谢

0 投票
3 回答
10883 浏览

c# - 如何使用 System.Lazy 和 Setter 对 POCO 实体中的列表进行延迟初始化?

我想在我的实体中使用 System.Lazy 来延迟初始化我的列表:

问题出在我的 SETTER 上,出现此错误:属性 ' System.Lazy<T>.Value' has no setter

如果我想做什么MyInstance.Questions = new List<Question> { ... }

我该如何进行?

更新:

我试图避免这种情况:

我做错了什么?

0 投票
1 回答
566 浏览

c - 首次使用时初始化函数的 gcc 属性

我一直在使用函数的 gccconstpure属性,这些函数返回指向在第一次使用时分配和初始化的“常量”数据的指针,即每次调用函数时都会返回相同的值。作为一个例子(不是我的用例,而是一个众所周知的例子)考虑一个函数,它在第一次调用时分配和计算三角查找表,并在第一次调用后返回一个指向现有表的指针。

问题:我被告知这种用法是不正确的,因为这些属性禁止副作用,并且如果不使用返回值,编译器甚至可以在某些情况下完全优化调用。我对const/pure属性的使用是安全的,还是有任何其他方法可以告诉编译器N>1对函数的调用相当于对函数的 1 次调用,但对函数的 1 次调用不等于对函数的 0 次调用?或者换句话说,该函数仅在第一次调用时才有副作用?