spring框架注入的位置


项目进入尾声,至少目前看起来是这样,写操作手册无聊的时候,就对比了使用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,虽然这样对可能出现的某一操作的修改带来便利,但也造成类文件过多,不便于管理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值