项目进入尾声,至少目前看起来是这样,写操作手册无聊的时候,就对比了使用spring开发的两个项目关于注入位置不同的问题。
A项目:
配置文件:
<bean id="deleteService" class="com.lsk.database.service.DeleteService" />
<bean id="deleteref" class="com.lsk.webwork.action.DeleteAction"
singleton="false">
<property name="deleteservice">
<ref local="deleteService" />
</property>
</bean>
注入DeleteService的实现到Action,DeleteService通过spring框架管理bean获取UserDao,利用了Hibernate自动生成的方法代码。
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
UsersDAO usersDao = UsersDAO.getFromApplicationContext(ctx);
具体数据库的操作在UserDAO中实现。
关于DAO的配置文件设置如下:
<bean id="UsersDAO"
class="com.lsk.hibernate.databaseobject.UsersDAO">
<property name="sessionFactory">
<ref bean="msfid" />
</property>
</bean>
小结:将curd操作封装为service,分别注入到ACTION。
B项目:
配置文件:
<!--f05 manager service begin-->
<bean id="f05ServiceImpl"
class="com.dc.portal.nsrywgl.f05.service.impl.F05ServiceImpl">
<property name="f05DAO">
<ref bean="f05DAOImpl" />
</property>
</bean>
<bean id="f05DAOImpl" parent="baseDAO"
class="com.dc.portal.nsrywgl.f05.dao.impl.F05DAOImpl" />
<!--f05 manager service end-->
注入DAO的实现类到Service实现类中,在Action中通过
IF05Service service = (IF05Service) AppContext.getBean("f05ServiceImpl");
的方式获取Service实现类。
小结:将curd操作放在一个DAO实现类中,如F05DAOImpl,对service进行一次注入。
==================================================
A.B注入位置不同,似乎又只是殊途同归。可以综合一下,可以将daoimp和serviceimp分别进行注射操作,这样不就需要使用AppContext.getBean等,另外似乎也没很大必要将crud操作分解为不同的service,虽然这样对可能出现的某一操作的修改带来便利,但也造成类文件过多,不便于管理。