Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过Spring将字段注入Hibernate加载的实体_Java_Hibernate_Spring_Dependency Injection - Fatal编程技术网

Java 通过Spring将字段注入Hibernate加载的实体

Java 通过Spring将字段注入Hibernate加载的实体,java,hibernate,spring,dependency-injection,Java,Hibernate,Spring,Dependency Injection,我正在寻找一种方法,通过Spring将某些属性注入到由Hibernate从DB加载的bean中 例如 我可以配置Spring吗?这样每当Hibernate创建Student类的对象时,一些applicationContext文件中定义的属性都会被注入到对象创建中?一种方法是定义自定义用户类型并从那边的Spring配置访问属性。但是我想你会从其他人那里得到更好的回复:)。有一个工具可以实现这一点,使用。这将自动连接带有Spring依赖项的注释类的任何新实例,包括使用Hibernate之类的反射实例

我正在寻找一种方法,通过Spring将某些属性注入到由Hibernate从DB加载的bean中

例如


我可以配置Spring吗?这样每当Hibernate创建Student类的对象时,一些applicationContext文件中定义的属性都会被注入到对象创建中?

一种方法是定义自定义用户类型并从那边的Spring配置访问属性。但是我想你会从其他人那里得到更好的回复:)。

有一个工具可以实现这一点,使用。这将自动连接带有Spring依赖项的注释类的任何新实例,包括使用Hibernate之类的反射实例化的对象

它确实需要一些类加载魔法,这取决于。

在工作时,我想说标准的spring/hibernate方法是注册一个(在和中阅读更多)

下面是spring sessionfactory bean定义的一个片段

<bean id="mySessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    ...
    <property name="eventListeners">
        <map>
            <entry key="post-load">
                <bean class="com.foo.spring.MyLoadListener"></bean>
            </entry>
        </map>
    </property>
</bean>

听着,不需要aspectj。

您可以将依赖项注入到实体的hibernate DAO bean中,并在从DAO返回之前设置实体的属性

只有从DAO加载实体时,这才有效

<bean id="mySessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    ...
    <property name="eventListeners">
        <map>
            <entry key="post-load">
                <bean class="com.foo.spring.MyLoadListener"></bean>
            </entry>
        </map>
    </property>
</bean>
public class MyLoadListener implements LoadEventListener{

    public void setSpringManagedProperty(String springManagedProperty){
        this.springManagedProperty = springManagedProperty;
    }
    private String springManagedProperty;

    @Override
    public void onLoad(LoadEvent event, LoadType loadType) throws HibernateException{
        if(MyEntity.class.getName().equals(event.getEntityClassName())){
            MyEntity entity = (MyEntity) event.getInstanceToLoad();
            entity.setMyCustomProperty(springManagedProperty);
        }

    }

}