我有一些 Spring 托管类(通过 xml 配置),其中一个是 SessionFactory,它被注入到另一个 Spring 托管类中。每当这个类需要一个新的 Session 时,它就会在 SessionFactory 上调用 createSession。
但是,除非我弄错了,否则这意味着 Sessions 本身不是 Spring 管理的,这是有问题的,因为它们有一些 @Transactional 方法,这些方法要求 bean 由 Spring 管理。
我一直在阅读 FactoryBeans,但我不确定如何做到这一点的最佳方法是,尤其是我的 createSession 方法需要一个参数,而 FactoryBean.getObject() 没有。
我可以使用 getObject 然后手动将参数设置得更高,但如果可能的话,我想在工厂中强制设置。
任何人都可以帮忙吗?提前致谢。下面是一个简化的例子。
public class SessionFactory {
public final Session createSession(String username){
Session session = new SessionImpl(username);
return session;
}
}
public class SessionImpl implements Session{
private String username;
@Override
@Transactional
public void doSomething(){
// Does something
}
public void setUsername(String username){
this.username = username;
}
public String getUsername(){
return username;
}
}
public class Service {
private SessionFactory sessionFactory; // Set by Spring through xml config
public void doSomethingServicy(){
}
public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory = sessionFactory;
}
}