Aay*_*uri 18 java spring hibernate dependency-injection
我正在寻找一种通过Spring在一个由Hibernate从DB加载的bean中注入某些属性的方法.
例如
class Student {
int id; //loaded from DB
String name; //loaded from DB
int injectedProperty; //Inject via Spring
}
Run Code Online (Sandbox Code Playgroud)
我可以配置Spring,以便每当Hibernate创建类Student的对象时,某些applicationContext文件中定义的某些属性会注入对象创建吗?
Sea*_*oyd 30
虽然aspectj方式有效,但我会说标准的spring/hibernate方式是注册一个LoadEventListener(在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>
Run Code Online (Sandbox Code Playgroud)
这是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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
看妈妈,不需要任何方面.
ska*_*man 10
有一个设施,使用AspectJ类编织与@Configurable注释.这将new使用Spring依赖项自动连接带注释的类的任何实例,包括使用Hibernate等通过反射实例化的对象.
它确实需要一些类加载魔法,因此取决于与服务器平台的兼容性.
| 归档时间: |
|
| 查看次数: |
7704 次 |
| 最近记录: |