如何从不是由弹簧创建的对象中访问弹簧豆
在我的Web应用程序中,我使用休眠和弹簧。在某些情况下,从 Hibernate 层返回的实体类需要访问其他服务类。实体类不仅仅是DTO,它们包含一些业务逻辑,并且要执行一些业务逻辑(例如,当满足某些条件时可能会发送电子邮件等),这些都需要访问服务类。服务类是春豆。那么,在这种情况下,从这些在春季环境之外创建的实体类中获取弹簧豆的推荐方法是什么?
在我的Web应用程序中,我使用休眠和弹簧。在某些情况下,从 Hibernate 层返回的实体类需要访问其他服务类。实体类不仅仅是DTO,它们包含一些业务逻辑,并且要执行一些业务逻辑(例如,当满足某些条件时可能会发送电子邮件等),这些都需要访问服务类。服务类是春豆。那么,在这种情况下,从这些在春季环境之外创建的实体类中获取弹簧豆的推荐方法是什么?
您正在查找服务定位器模式,
春季实施
您可以注册并获取对bean的引用并静态地提供服务ApplicationContextAware
ApplicationContext
public class ApplicationContextUtils implements ApplicationContextAware {
private static ApplicationContext ctx;
private static final String USER_SERVICE = "userServiceBean";
@Override
public void setApplicationContext(ApplicationContext appContext)
throws BeansException {
ctx = appContext;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
public static UserService getUserService(){return ctx.getBean(USER_SERVICE);}
}