栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring + EntityManagerFactory +休眠监听器+注入

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring + EntityManagerFactory +休眠监听器+注入

如果您使用SessionFactory,则将是以下配置:

<bean id="mySessionFactory"    >    <!-- Stripped other stuff -->    <property name="eventListeners">        <map> <entry key="pre-load">     <bean  /> </entry> <entry key="pre-persist">     <bean  /> </entry>        </map>    </property></bean>

但是由于您使用的是JPA,因此恐怕您需要使用此线程中概述的AOP

或者你可以

  1. 将ApplicationContext存储在ThreadLocal或自定义的holder类中,并通过静态方法公开它
  2. 为您的听众提供一个基类,如下所示:

基类:

public abstract class Listenerbase{    protected void wireMe(){        ApplicationContext ctx = ContextHelper.getCurrentApplicationContext();        ctx.getAutowireCapableBeanFactory().autowireBean(this);    }}

现在在您的lifycycle方法中

wireMe()
先调用。


更新:

这是一个示例实现

ContextHelper

public final class ContextHelper implements ApplicationContextAware{    private static final ContextHelper INSTANCE = new ContextHelper();    private ApplicationContext applicationContext;    @Override    public void setApplicationContext(final ApplicationContext applicationContext){        this.applicationContext = applicationContext;    }    public static ApplicationContext getCurrentApplicationContext(){        return INSTANCE.applicationContext;    };    public static ContextHelper getInstance(){        return INSTANCE;    }    private ContextHelper(){    }}

将其连接到您的Spring Bean配置中,如下所示:

<bean  factory-method="getInstance" />


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号