我在写一个用hibernate实现文件上传的代码,网上查到很多用spring+hibernate实现的,里面涉及到几个spring的包。但是我对spring一窍不通,对文章中提到的“注入”一词实在费解,我是想把那几个包拿来导入到我的工程里,然后代码自己写,不实现spring的配置文件,请问这该如何实现,望高手不吝赐教!!!小弟先谢过了。如以下描述:LobHandler必须注入到Hibernate会话工厂sessionFactory中,因为sessionFactory负责产生与数据库交互的Session。LobHandler的配置如代码:1. <beans> 2. …3. <bean id="nativeJdbcExtractor"4. class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"5. lazy-init="true"/>6. <bean id="lobHandler"7. class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">8. <property name="nativeJdbcExtractor">9. <ref local="nativeJdbcExtractor"/>10. </property>11. </bean>12. …13. </beans>注入的配置文件代码如下:1. <beans> 2. …3. <bean id="sessionFactory"4. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">5. <property name="dataSource" ref="dataSource"/>6. <!-- 为处理Blob类型字段的句柄声明 //-->7. <property name="lobHandler" ref="lobHandler"/>8. …9. </bean>10. …11. </beans>
如第7所示,通过sessionFactory的lobHandler属性进行注入。
我现在已经手动编写了seesionFactory
LobHandler的包我也导入工程了
然后这个“注入”我想自己写代码,该如何实现!
如第7所示,通过sessionFactory的lobHandler属性进行注入。
我现在已经手动编写了seesionFactory
LobHandler的包我也导入工程了
然后这个“注入”我想自己写代码,该如何实现!
如果你想知道什么是依赖注入,可以看http://topic.csdn.net/u/20080102/19/4146990f-c573-4969-b004-704c8d0c445d.html中我的回复。
可能你的意思是不使用“注入”直接进行实例化,这样也是可行的,直接new就行了,但是如果你真是想手动实现它“注入”的机制,还是比较困难的,请慎重。
请教一下,new了一个实例之后,不可以不调用的,如果看配置文件,能看出这该实例在其中是怎么被调用的吗?
如果用spring进行依赖注入的方式获得实例,
首先,利用
Resource res=new ClassPathResource("applicationContext.xml");
对你xml文件进行定位。
然后用
BeanFactory bf=new XmlBeanFactory(res);
对xml解析。
当你需要获得实例时,调用方法
类名 实例=(类名)bf.getBean("类名");
获得这个类的一个实例。
具体的完成机制设计到一大堆java反射编程的内容,自己实现确实比较费尽。
主要我不明白LobHandler在LocalSessionFactoryBean里面是如何被调用的比如单看下面这段配置信息
<bean id="userDAO" class="org.tie.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
应该可以理解为 userDAO里调用了sessionFactory
而我知道userDAO里对sessionFactory的调用实际上是调用了它的getSession()方法来获得一个session实例,这样我就能模范配置文件写个sesssionFactory然后在userDAO里显示的new一个实例,来实现功能差不多的代码
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean> 看了这段代码,就相当于知道,有个类是package org.tie.dao;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
public class UserDAO{
private LocalSessionFactoryBean sessionFactory;
……
public void getSessionFactory(LocalSessionFactoryBean sesstionFactory){
this.sessionFactory=sessionFactory;
}
}而这里的这个注入,就是说,你原来得自己写
sessionFactory=new LocalSessionFactoryBean();
现在在构造UserDAO的实例之后,自动通过getter把这个实例给了UserDAO的这个实例。
谢谢了!