1
public class Auditing extends EmptyInterceptor {

    @Resource
    private ApplicationService applicationService;

    public boolean onFlushDirty(Object entity, Serializable id,Object[] currentState,   Object[] previousState, String[] propertyNames, Type[] types) {   
        if(applicationService == null){
            System.out.println("applicationService is null");
        }

        return(true);
    }

}

我观察到每个休眠操作都会创建一个新的 Auditing 对象,并且在 onFlushDirty() 中它总是打印“ applicationService is null ”

谁能告诉我如何使 ApplicationService 在 EmptyInterceptor 中可用?

4

2 回答 2

0

I found a work around for this by having a Class with static applicationService property. Now by creating a static reference for it i can use applicationService.

Its working for now.. Please post any better or efficient suggestions if you have :)

Regards,

于 2013-04-03T14:59:24.013 回答
0

您可以通过实现 ApplicationContextAware 接口来创建具有应用程序上下文对象的类。

public class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext context;

    public static ApplicationContext getApplicationContext() {
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext ctx) {
        context = ctx;
    }
}

现在您可以使用以下代码获取您的 bean。

applicationService = (ApplicationService ) ApplicationContextProvider.getApplicationContext().getBean("applicationService")

上面的代码将来可以用于获取任何其他 bean,并且不需要您继续添加静态 bean。

于 2018-06-07T07:10:28.017 回答