您的位置:首页 > 编程语言 > Java开发

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

2016-08-24 18:23 465 查看
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;
}

}

想要通过执行[b]adminService.function(),来实现执行AdminServiceIMP实现类的function方法;[/b] 这就是“控制反转”,即通过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>格式的重复。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐