讨论:在spring中自动引用dao的bean的设想

Updated on 2011-1-30
在struts2里使用了自动查找类的技术。
那部分代码可以用来实现这个。当然,主要还是要看具体项目需求。 
Spring mvc的annotation方式配置Controller也采用了类似技术。

其基本思路是 从 Resource中查找META-INF下包含的jar包和其它classpath信息。
对于直接文件系统路径下文件,直接遍历目录得到类名;
对于jar,则内存中解压,遍历指定路径,得到类名;
在得到类名后,用该类名在classloader中查找具体实现类。
——————————————————————————————————————————————————
最近,大略看了下rails,觉得那种约定方式的编程,确实方便很多。

想到spring的DAO模式,其实基本上都是类似模式。
一堆接口对应一堆dao的实现,配置基本上都是雷同的。
不知道有无可能使用使用这样的方式来自动引入dao:

DaoFactory检索dao interface所在的package,然后解析dao的名字出来,
根据dao的名字建立bean放到spring的bean factory里,同时设置一下session factory。
比如有一个UserDao在接口包里,那么daoName就是userDao,生成的Bean就是userDao。
使用的实现类则按名称模式拼出来%daoName%Hibernate,UserDaoHibernate,或者就是以包的
最后一个字符串作为后缀。
这样就可以放一个dao的interface和实现,进行自动配置了。

类似下面的配置代码。

[code]
<bean id="daoFactory" class="cn.mudfans.dwangel.spring.DaoFactory">
<property name="sessionFactory" value="sessionFactory"/>
<property name="daoInterfacePackage" value="cn.mudfans.dwangel.dao"/>
<property name="excludes">
<props/>
</property>
<property name="daoImplementPackage" value="cn.mudfans.dwangel.dao.hibernate"/>
<property name="daoImplementPattern" value="%daoName%Hibernate"/>
</bean>
[/code]
剩下的问题是,我对spring还不了解,不知道如何解决依赖关系的检查问题。
:oops:

大家给点意见吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值