`
Hillen.chan
  • 浏览: 61053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

service注入Action

阅读更多
1.老爸操持型 
这种类型,即是在BaseAction中提供一个getBean(String  beanName)的父类方法,业务Action  在需要Serivce时,调用父类的getBean()得到Object型的Service,再Cast。 
e.g. 


代码
程序代码:
public class BaseAction extends DispatchAction   
{   
   ...    
   public Object getBean(String name)   
  {   
      if (ctx == null)   
      {   
          ctx = WebApplicationContextUtils   
                .getRequiredWebApplicationContext(servlet.getServletContext());   
      }   
      return ctx.getBean(name);   
  }   
}  



2.自已动手型 
自己动手  丰衣足食,再加了自从有了IoC,所谓动手也只是衣来后的伸手和饭来后的张口。自己动手型,即是利用Spring的IoC,将IoC容器中的Service注入到Action中,当然Action需要提供注入服务有setter. 
如果采用这种方式,首先需要让Spring接管Struts,然后在Spring配置文件中,配置Action的注入属性。 
首先.在struts-config.xml将Spring引狼入室。 


代码

程序代码:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">    
        <set-property property="contextConfigLocation"    
                                  value="/WEB-INF/action-servlet.xml"    
        />    
</plug-in>   




然后,Struts再向Spring投怀送抱: 


程序代码:
<bean id="userService" class="com.nic.service.UserServiceImpl">  
    <property name="userDao">  
    <ref bean="userDao" />  
    </property>  
</bean>    
<bean name="/userAction" class="com.stamen.web.UserAction">  
   <property name="userService" ref="userService"/>  
</bean>  



聪明的你一下就看出“/userAction  ”即是com.stamen.web.UserAction在Struts中的配置名。 

3.朋友帮忙型  朋友多了好办事,凡事都自己动手总有一天会活活累死,所有Action为自己需要的Service提供setter,并且在Spring中注入,好累啊。小学生都在减负了,我们也来为Action减减负吧--提供一个专门 
查找Serivice的ServiceLocator,负责获取所有的Service,该类为每个Service提供专门的获得方法,如: 

程序代码:
 public class ServiceLocator   
  
   private static ApplicationContext factory = null;   
   public static void init(ApplicationContext ctx)   
   {       
       factory = ctx;   
   }   
   public static LogService getLogService()   
   {   
       return (LogService) ServiceLocator.getBean("logService");   
   }   
  
   public static UserService getUserService()   
   {   
       return (UserService) ServiceLocator.getBean("userService");   
   }   
   public static PieeService getPieeService()   
   {   
       return (PieeService) ServiceLocator.getBean("pieeService");   
   }   
   public static PieeGrid getPieeListService()   
   {   
       return (PieeGrid) ServiceLocator.getBean("pieeListService");   
   }   
   ...   
}   



Action要用哪个Serivce时,直接通过ServiceLocator.getXxxService()就可以获得了,省去了 
“老爸操持型”指定Service  名和Cast的繁琐,比在Spring中IoC来IoC去也来得省心省力。 

下面做一个自己的分析小结: 

1.“老爸操持型”  将serviceName分散到代码中,到时配置文件中serviceName一改,得牵一毛而动全身->维护性差;且要进行Cast转换,怎一个繁字了得。 

2.“自己动手型”也不好,不但在Action中要添加get/setXxxService代码,而且还要在Struts和Spring的配置文件中做好群众的大串连工作,难道我们的配置还不够多吗?吃回香豆的,你别又跳出来啊:) 

3.“ 朋友帮忙型”,目前,我认为是比较好的方式,ServiceLocator象一个服务周到
分享到:
评论

相关推荐

    Web服务器端在Action、dao、service之外实现spring注入

    我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...

    SSH整合案例-商品管理.rar

    1. 公共类搭建 1.1 po对象及其映射 1.2util包工具类 ...3.7.编辑applicationContext.xml, dao注入sessionFactory,service注入dao,action注入service。实现Spring IoC配置 4 各模块具体实现 4.1 登录模块

    依赖注入相关解释

    Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实现,Service对 象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大大减少。

    SSH概要介绍

    5、将service层接口,注解注入Action层,将操作,传给service接口。 6、将applicationContext.xml的事务传播控制器,注解注入service接口实现类,在需要事务的地方,注解配置事务控制。将Dao接口注解注入service接口...

    上课日记学习java

    Action的生命周期: ... (4)请求参数注入完成后,框架会调用Action执行方法(如: execute方法 等),次方法中可以调用service.dao 等; (5)请求转发给view后.view可以使用${}表达式调用Action的getXxx() 方法读取数据.

    spring考试通过必备材料.docx

    编写JSP,Action类,Service接口类,Service实现类,DAO接口类,DAO实现类 15 Jsp添加 15 Jsp修改 15 Jsp主界面 16 *Action,Action类 16 *Service,Service接口类 18 *ServiceImpl,Service实现类 18 *DAO,DAO接口...

    java命名规范 开发规范

    d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f...

    Struts2.1Spring2.5IBatisJQuery框架

    2) 利用Struts2的struts2-spring-plugin插件,实现在Action中自动注入service对象。 3) 利用Spring的@Service、@Repository两个Annotation来实现Service类、DAO类在Spring容器中的自动注册,利用@Autowired来实现...

    spring in action英文版

     1.4.1 依赖注入  1.4.2 IoC应用  1.4.3 企业级应用中的IoC  1.5 应用AOP  1.5.1 AOP介绍  1.5.2 AOP使用  1.5.3 企业级应用中的AOP  1.6 Spring比较  1.6.1 比较Spring和EJB  1.6.2 ...

    flash-message-service:Flash消息服务

    您可以将flash-message-service注入到控制器或操作中,并通过在di-container中自动连线来自动解决所有依赖性。 &lt;?phpdeclare (strict_types= 1 );namespace App \ Action ;use Psr \ ...

    基于SSH模拟当当网项目(电子商务平台)

    采用整合插件注入方式使用Spring容器中的Service或DAO. (默认按名称匹配规则) 4.配置信息的改造 Service和DAO需要交给Spring容器. struts.xml不需要改变,因为引入struts-spring-plugin.jar后,Action创建会交给...

    ssh分页分层实现

    ssh分页实现,采用依赖注入的方式,分dao,service,action 层实现

    如何搭建SSH2框架

    如何搭建SSH2框架 spring自动装配相关注解: @Repository—Dao类自动注入 @Service—业务类自动注入 @Controller—Action自动注入 @AutoWare—自动装配已注入

    P15_处理服务器故障_P16_HTTP_HEAD_Routine.Api2020_2_7.rar

    使用 ASP.NET Core 杨旭 RESTful API ReSharper ApiController ... P15 处理服务器故障 ... Binding source Attributes ● [FromBody],请求的Body,默认 ...● [FromService],作为Action参数而注入的服务

    ssh2(struts2+spring2.5+hibernate3.3)自动生成模版

    {自定义的存放包}目录:4个xml文件(applicationContext-dao.xml(dao注入配置),applicationContext-service.xml(service注入配置),action-servlet.xml(action注入配置),struts-{自定义的存放包名}.xml(struts2的...

    Web服务启动时自动加载Servlet,并读取数据库内容

    我操作数据库用的是spring的HibernateTemplate和JdbcTemplate,访问数据库是以bean注入的方式,在action里注入service的实现,读取数据库数据,其实现在的关键就是得到这个service的实例化对象,

    spring项目开发学习笔记

    容器(spring):管理dao,service,action,...包含并管理应用对象的生命周期和配置 框架:使用组件配置组合成复杂的应用,并提供很多基础功能 Spring提供了对开源社区中很多框架及JavaEE中很多技术的支持,让程序员很...

    使用AJAX完成用户名是否存在异步校验

    1.事件触发: * onblur 2.编写AJAX代码: * 项Action中提交:传递username参数 3.编写Action ...6.编写Service: * 注入UserDao * 事务管理: 核心代码实现: function checkUsername(){ // 获得文件框值: var

    客户关系管理系统框架搭建(二)

    @Service(ISysUserGroupService.SERVICE_NAME) public class SysUserGroupServiceImpl implements ISysUserGroupService { @Resource(name=ISysUserGroupDao.SERVICE_NAME) private ...

    整合spring +struct2+mybatis实例

    整合SSM的详细实例,配置文件各处均有注释,且遵守各种规范(命名,包,等等),日志用log4j,spring中用了注解注入(用的最多的注解),还有对事物的控制、以及扫描Mybatis的配置文件,三层模式(dao+service+action)完全...

Global site tag (gtag.js) - Google Analytics