Spring中控制反转怎么配置的?比如Action类有个成员变量TestService testService,Action类就可以直接用TestServiceIMP中的方法了
2016-08-24 18:23
465 查看
Spring中控制反转怎么配置的?比如Action类有个成员变量TestService testService,Action类就可以直接用TestServiceIMP中的方法了
方式由两种:
1)通过在spring中配置
...
...
...
如下图:
2)通过@component
参考链接: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>格式的重复。
方式由两种:
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>格式的重复。
相关文章推荐
- spring IOC控制反转,实现action的配置
- Spring的bean中直接调用成员变量出现nullpointexception的解决方法
- 一个接口Test可以被new吗?new完就可以直接使用Test中的方法了吗(其实Test中的方法在TestIMP中实现)?
- 类中使用get和set方法来控制成员变量,而不将成员变量的权限设为public的原因?
- 传智播客spring学习,理解控制反转和spring在项目中可以带来的好处
- Action类中,各个成员变量(局部变量)必须要有get和set方法
- action可以直接获取html的变量内容(不用 request)
- Spring配置文件的三种方法(创建测试类Test.java)
- 父类的正常成员函数子类可以使用,并不是继承下来 的,子类是怎么调用父类的函数 : 可能是利用了一种叫函数名联编的方法.没有隐藏的情况下用函数名字来决定调用的函数.
- JDK环境变量配置方法(初学者可以看懂)
- Spring3.0.5和Hibernate3.6.0集成的事务控制配置方法
- Spring2.5学习笔记1-控制反转-DI容器配置元数据方式
- 静态导入,可以静态导入成员变量和方法
- 重写——上转型对象不能操作子类新增成员变量和方法但可以操作子类继承和重写的方法
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- struts2.3.1.2 使用动态方法配置 Action,使得一个Action可以处理多个请求
- JAVA环境变量的配置方法【希望可以帮助你】【个人实测没问题】
- 浅析如何让Spring 来管理Action的配置方法
- jsp:synchronized方法控制对类成员变量的访问(实例)
- Spring总结——控制反转,注入(配置和注解两种方式)