我有一个由相当大的对象图组成的领域模型,其中领域对象正在创建其他领域对象等等。这些域对象中的每一个都需要访问少量单例类型的帮助对象以用于各种目的。
当我想起来我已经在使用 Spring 并且我可以使用 Spring 在应用程序启动时实例化这些帮助器中的每一个时,我正要使用 Java 单例模式来实现它们。
我的问题是如何从我的域对象中找到它们?这些都是通过“new”运算符创建的对象,不受 Spring 的控制。
我在想,如果我掌握了 Spring 应用程序上下文(我没有),我可以使用“getBean”方法——但这种方法的性能好吗?我需要这些东西快...以及如何快速获取应用程序上下文?
最佳答案
在典型的 Spring 应用程序中,您所描述的那种跨实体逻辑通常在业务服务层(即 Spring 管理的单例)中实现,而不是在域对象中实现。 Spring 应用程序中的域类往往是相当简单的数据容器,可能带有一些方法来对它们封装的数据执行基本操作,但远远不够管理它们自身之外的复杂对象图。所以业务服务对象管理领域对象,而不是相反。
如果您坚持将单例注入(inject)到您的域对象中,您可以使用 AspectJ 来实现。 . Spring 本身并不能很好地支持这一点。
关于java - 从域对象中访问 Spring 单例的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191569/