You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Kenan Azam <az...@gmail.com> on 2008/06/27 23:52:24 UTC

Using Struts with Spring DAO's in IBATIS

Hi there,
We have an application where we are using Struts as our web framework and
IBATIS in the data layer. We upgraded to the new version of ibatis which
required to upgrade the DAO's to Spring DAO's.

To use the Spring DAO's we started to use spring with struts. The only
purpose of Spring was to inject the dao's into the service classes and into
my Struts Action. However , this approach ties my Struts framework with
Spring. Because, the beans.xml file tries to see Struts Action classes as
Beans to do its injection.

<action-mappings>

        <action
                path="/employeeSetUp"
                name="employeeForm"
                type="org.springframework.web.struts.DelegatingActionProxy"




This approach however, ties Ibatis to Spring and forces us to use Spring in
our web layer as well.

Can I use Spring DAO's without doing dependency injection?
Has anyone used Ibatis Spring DAO's in Struts without making Struts aware of
the existence of Spring. Any pointers are appreciated.

Thanks.

RE: Using Struts with Spring DAO's in IBATIS

Posted by Poitras Christian <Ch...@ircm.qc.ca>.
Hi,

I've done something close to this (my actions did not depend on Spring directly).
I've been using Struts/iBATIS Dao/SqlMap for a while. I've changed to Spring Dao. To use DI in an "semi-automatic way", I've used the @SpringBean annotation from Stripes (since Spring didn't support annotations back then).
To do injection without being aware of Spring (it tied my actions to Stripes, but you can easily writte your own annotation to do the same thing based on Stripes code).

This is a part of a custom class I used for DI.

import net.sourceforge.stripes.integration.spring.SpringHelper;

/**

* Inject Spring dependence into object.

* If object was created by cglib, this method may not be able to set beans correctly.

* @param object Object.

*/

public static void injectBeans(Object object) {

SpringHelper.injectBeans(object, applicationContext);

}



A Struts action
public class MyAction extends Action {
    @SpringBean MyService myService;
    public MyAction() {
        SpringInjector.injectBeans(this);
    }
}


Stripes is available here http://www.stripesframework.org/display/stripes/Home

This will not relieve you of DI, but it's a possible way to get around dependency on spring for your actions.

Christian



________________________________
From: Kenan Azam [mailto:azam.kenan@gmail.com]
Sent: Friday, June 27, 2008 5:52 PM
To: user-java@ibatis.apache.org
Subject: Using Struts with Spring DAO's in IBATIS

Hi there,
We have an application where we are using Struts as our web framework and IBATIS in the data layer. We upgraded to the new version of ibatis which required to upgrade the DAO's to Spring DAO's.

To use the Spring DAO's we started to use spring with struts. The only purpose of Spring was to inject the dao's into the service classes and into my Struts Action. However , this approach ties my Struts framework with Spring. Because, the beans.xml file tries to see Struts Action classes as Beans to do its injection.


<action-mappings>

        <action
                path="/employeeSetUp"
                name="employeeForm"

                type="org.springframework.web.struts.DelegatingActionProxy"



This approach however, ties Ibatis to Spring and forces us to use Spring in our web layer as well.

Can I use Spring DAO's without doing dependency injection?
Has anyone used Ibatis Spring DAO's in Struts without making Struts aware of the existence of Spring. Any pointers are appreciated.

Thanks.