Java 通过Spring将字段注入Hibernate加载的实体
我正在寻找一种方法,通过Spring将某些属性注入到由Hibernate从DB加载的bean中 例如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创建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);
}
}
}