有几种可能性。
请注意,HibernateSessionFactory
在构建它并SessionFactoryBean
内置方法之后是不可变的SessionFactory
,afterPropertiesSet
因此设置SessionFactoryBean
您想要的工作必须由某些人完成BeanFactoryPostProcessor
编辑
阅读您的评论后,我认为您可以声明一个EntityClassHolder
bean 并使用 Autowire 集合工具来获取EntityClassFactoryBean
您可以注入单个SessionFactoryBean
. 但我不确定这是否是你想要做的:
public class EntityClassHolder {
List<Class<?>> entityClasses;
public List<Class<?>> getEntityClasses() {
return entityClasses;
}
public void setEntityClasses(List<Class<?>> entityClasses) {
this.entityClasses = entityClasses;
}
}
public class EntityClassFactoryBean extends AbstractFactoryBean<List<Class<?>>> {
@Autowired
List<EntityClassHolder> list;
@Override
public Class<?> getObjectType() {
return List.class;
}
@Override
protected List<Class<?>> createInstance() throws Exception {
ArrayList<Class<?>> classList = new ArrayList<Class<?>>();
for (EntityClassHolder ech : list) {
classList.addAll(ech.getEntityClasses());
}
return classList;
}
}
现在,例如,如果您有多个 applicatonContext-xxx.xml,当您加载其中一个时,SessionFactory
将使用 bean 中定义的实体类进行配置。EntityClassHolder