Spring中控制反转怎么配置的?比如Action类有个成员变量TestService testService,Action类就可以直接用TestServiceIMP中的方法了

来源:互联网 发布:淘宝如何好评截图 编辑:程序博客网 时间:2024/06/10 15:33

Spring中控制反转怎么配置的?比如Action类有个成员变量TestService testService,Action类就可以直接用TestServiceIMP中的方法了

方式由两种:

1)通过在spring中配置

<bean name="login"class="com.example.struts.LoginAction"  ><property name="adminService"><ref local="AdminService" /></property></bean>
<bean id="AdminService" class="com.example.service.AdminServiceIMP"><property name="usersDAO"><ref local="UsersDAOProxy" /></property></bean>

...

...

...

如下图:


2)通过@component


@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
参考链接:http://tomfish88.iteye.com/blog/1497557


=======================spring控制反转的实现过程,以及配置文件总结========================

1spring控制反转的实现过程

有个LoginAction类,该类有个成员变量private AdminService adminService。AdminService其实是一个接口,AdminServiceIMP才是真正的实现类。代码如下:

import com.example.hibernate.Users;
import com.example.service.AdminService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport
{
private AdminService adminService = null;
public String execute() throws Exception
{
Users user=adminService.function();  
}
public AdminService getAdminService()
{
return adminService;
}

public void setAdminService(AdminService adminService)
{
this.adminService = adminService;
}

}

想要通过执行adminService.function(),来实现执行AdminServiceIMP实现类的function方法; 这就是“控制反转”,即通过spring实现对AdminService的实例化,即AdminService adminService=new AdminServiceIMP();

这就需要在spring的配置文件中进行配置,配置如下:

<bean name="login" class="com.org.test.LoginAction">
<property name="adminService">
<ref local="AdminService" />
</property>
</bean>

<bean id="AdminService" class="com.example.service.AdminServiceIMP">
<property name="usersDAO">
<ref local="UsersDAOProxy" />
</property>
</bean>

...

...

...

其中第一个<bean>的意思是,对LoginAction类的成员变量adminService用id为AdminService的<bean>进行初始化(即第二个<bean>,即用com.example.service.AdminServiceIMP对adminService进行初始化)。具体解释如下图所示:

参考链接:

http://zhidao.baidu.com/link?url=OqGSGrC70rAWPNKO4nPz2c_VZgkTtiw3AahCl_VBGDcrjv-juMjvEycAGiFhwim6bGPzK_XvZ7fFITU3feJ11q


LoginAction类如何才能获取到spring配置的adminService传入参数呢?

1)将参数adminService定义到LoginAction的成员变量中。

2)生成adminService成员变量的get和set方法。

这样一来LoginAction类就能获取到在spring配置的adminService参数的值了,即AdminService adminService=new AdminServiceIMP(),执行adminService.function(),其实执行的就是AdminService.function方法,“控制反转”的配置就完成。

===

我的理解:控制反转的配置过程,其实就是LoginAction获取在spring中配置的传入参数adminService的过程。



2spring配置文件总结

其实spring配置文件就是配置各种bean,是多个<bean></bean>格式的重复。










1 0
原创粉丝点击