spring AnnotationSessionFactoryBean 如何转化SessionFactory类型的?

yong821821 2014-10-22 02:58:16
spring 配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
......

java代码:
SessionFactiory sessionFactiory = (SessionFactiory )ctx.getBean("sessionFactory");

问题:
今天看了下AnnotationSessionFactoryBean的源码,里面竟然没有实现SessionFactory接口,
请问它是如何赋值给SessionFactory的?
望高手解答问题!
...全文
230 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yong821821 2014-10-22
  • 打赏
  • 举报
回复
是不是只有spring里面可以实现(做了getBean特殊处理),这样的类型转换; 如果普通的,不使用spring,是不是就无法实现这样的类型赋值?
zuxianghuang 2014-10-22
  • 打赏
  • 举报
回复
是的,new AnnotationSessionFactoryBean() instanceof SessionFactory 是false 因为 首先看继承 AnnotationSessionFactoryBean extends LocalSessionFactoryBean extends AbstractSessionFactoryBean implements FactoryBean<SessionFactory> 实现FactoryBean接口的类,通过getBean()方法时,返回的并不是bean定义的对象,而是getObject()返回的对象 而 AbstractSessionFactoryBean类实现了getObject()方法 返回的是SessionFactory 关键看getObject()方法
zuxianghuang 2014-10-22
  • 打赏
  • 举报
回复
是的,new AnnotationSessionFactoryBean() instanceof SessionFactory 是false的。 因为 AnnotationSessionFactoryBean extends LocalSessionFactoryBean extends AbstractSessionFactoryBean implements FactoryBean<SessionFactory> FactoryBean接口的类,通过getBean()方法时,返回的并不是bean定义的对象,而是getObject()方法返回的对象。 AbstractSessionFactoryBean类实现了getObject()方法,返回的不是AnnotationSessionFactoryBean 而是SessionFactory 关键看getObject()方法

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧