我正在寻找一种通过 Spring 在由 Hibernate 从数据库加载的 bean 中注入(inject)某些属性的方法。
例如
class Student {
int id; //loaded from DB
String name; //loaded from DB
int injectedProperty; //Inject via Spring
}
我可以配置 Spring 以便每当 Hibernate 创建类 Student 的对象时,在某些 applicationContext 文件中定义的一些属性被注入(inject)到对象创建中?
最佳答案
而 the aspectj way有效,我想说标准的 spring/hibernate 方法是注册一个 LoadEventListener (在 hibernate core reference、spring reference 和 this thread 中了解更多信息)
这里是 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>
这里是 LoadEventListener:
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);
}
}
}
看妈妈,不需要任何方面。
https://stackoverflow.com/questions/3505421/
相关文章:
java - Spring 的 JdbcTemplate 和事务
spring - 不使用 Maven 下载 Spring Jars
spring - 如何在 Thymeleaf 和 Spring Boot 中显示消息?
json - Spring REST 服务 : retrieving JSON from Reque
mysql - spring jpa application.properties useSSL
java - Spring Redis - 从 application.properties 文件中