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象一个服务周到
分享到:
相关推荐
我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...
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对 象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大大减少。
5、将service层接口,注解注入Action层,将操作,传给service接口。 6、将applicationContext.xml的事务传播控制器,注解注入service接口实现类,在需要事务的地方,注解配置事务控制。将Dao接口注解注入service接口...
Action的生命周期: ... (4)请求参数注入完成后,框架会调用Action执行方法(如: execute方法 等),次方法中可以调用service.dao 等; (5)请求转发给view后.view可以使用${}表达式调用Action的getXxx() 方法读取数据.
编写JSP,Action类,Service接口类,Service实现类,DAO接口类,DAO实现类 15 Jsp添加 15 Jsp修改 15 Jsp主界面 16 *Action,Action类 16 *Service,Service接口类 18 *ServiceImpl,Service实现类 18 *DAO,DAO接口...
d. 开发Service接口和Service接口实现,并在Action中通过set方法注入该Service; 接口文件:UserService 接口实现:UserServiceImpl 注入Service e. 开发DAO,DAO继承com.hikvision.xxx.HibernateBaseDAO; 示例 f...
2) 利用Struts2的struts2-spring-plugin插件,实现在Action中自动注入service对象。 3) 利用Spring的@Service、@Repository两个Annotation来实现Service类、DAO类在Spring容器中的自动注册,利用@Autowired来实现...
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注入到控制器或操作中,并通过在di-container中自动连线来自动解决所有依赖性。 <?phpdeclare (strict_types= 1 );namespace App \ Action ;use Psr \ ...
采用整合插件注入方式使用Spring容器中的Service或DAO. (默认按名称匹配规则) 4.配置信息的改造 Service和DAO需要交给Spring容器. struts.xml不需要改变,因为引入struts-spring-plugin.jar后,Action创建会交给...
ssh分页实现,采用依赖注入的方式,分dao,service,action 层实现
如何搭建SSH2框架 spring自动装配相关注解: @Repository—Dao类自动注入 @Service—业务类自动注入 @Controller—Action自动注入 @AutoWare—自动装配已注入
使用 ASP.NET Core 杨旭 RESTful API ReSharper ApiController ... P15 处理服务器故障 ... Binding source Attributes ● [FromBody],请求的Body,默认 ...● [FromService],作为Action参数而注入的服务
{自定义的存放包}目录:4个xml文件(applicationContext-dao.xml(dao注入配置),applicationContext-service.xml(service注入配置),action-servlet.xml(action注入配置),struts-{自定义的存放包名}.xml(struts2的...
我操作数据库用的是spring的HibernateTemplate和JdbcTemplate,访问数据库是以bean注入的方式,在action里注入service的实现,读取数据库数据,其实现在的关键就是得到这个service的实例化对象,
容器(spring):管理dao,service,action,...包含并管理应用对象的生命周期和配置 框架:使用组件配置组合成复杂的应用,并提供很多基础功能 Spring提供了对开源社区中很多框架及JavaEE中很多技术的支持,让程序员很...
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 ...
整合SSM的详细实例,配置文件各处均有注释,且遵守各种规范(命名,包,等等),日志用log4j,spring中用了注解注入(用的最多的注解),还有对事物的控制、以及扫描Mybatis的配置文件,三层模式(dao+service+action)完全...