spring,ioc模式与ejb3调用

04-09-08 hongsoft

我们先看看在servlet中怎么调用ejb3:

public class HelloServlet extends GenericServlet {

private Hello _hello;

public void setHello(Hello hello)

{

_hello = hello;

}

public void service(HttpServletRequest req, HttpServletResponse res)

throws IOException, ServletException

{

PrintWriter out = res.getWriter();

out.println(_hello.hello());

}

}

然后我们看看xml中的配置方法:

<web-app>

<servlet servlet-name="hello" servlet-class="com.hongsoft.HelloServlet">

<init hello="_ejb.HelloBean.HelloBean__EJB"/>

</servlet>

</web-app>

我们看到了什么?配置文件中把HelloBean传给了setHello作为参数,当然,HelloBean实

现了Hello接口;service中,直接调用_hello.hello(),实际调用的是HelloBean的

hello()方法实现.

呵呵,通过set方法来将需要的HelloBean传递给servlet,如果我们的需求发生了改变,

新加了Hello2Bean实现,我们只需要在配置文件中进行修改就可以了,这,就是ioc模式

中的type2.

Spring Framework采用的也是type2的ioc模式,比如spring配置文件如下:

<beans>

<bean id=“studentType1" class=“com.hongsoft.test.StudentType1"/>

<bean id=“teacher“ class=“com.hongsoft.test.Teacher">

<property name=“student">

<ref bean=“studentType1"/>

</property>

</bean>

</beans>

那么我们在代码中就可以这么使用:

public class Teacher {

private Student student;

public void setStudent(Student student) {

this.student = student;

}

//写论文方法

public void writePaper() {

student.writePaper();

}

}

这样,如果要写IOC的论文,就找一个精通IOC的学生写;如果要写BPEL的论文,就找一个

精通BPEL的学生写,要修改的地方,也就是配置文件而已.

banq
2004-09-10 10:01
不错,红狐心得有一定借鉴,也请多多发言,为你们工作流论坛创建加油。

hongsoft
2004-09-20 13:13
呵呵,请多指教

猜你喜欢