0 0

service层封装事务,action层怎么调用?10

在项目Service层 用spring的代理封装了事务配置后注入到Action进去准备用发现注入的不是包装过后代理的代理类,变成了普通Sercvice类了测试发现、Service层的事务是封装成功的,并能正确作用。在Action中,如果不用注入的方式使用,而是利用上下文去把这个封装的事务bean取出来,也能正确使用。。。不过。。感觉这样相当的挫。。咋个注入的方式就不行呢。。

问题补充://Service层封装的事务
<bean id="ServicetransactionBase" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">

    <property name="transactionManager">
            <ref local="transactionManager"/>
       </property>
        <property name="transactionAttributes">
            <props>
                <prop key="add*">PROPAGATION_REQUIRED</prop>             
            </props>
        </property>    
</bean>


<bean id="goodsrServiceimplTarget" parent="ServicetransactionBase" >
   <property name="target">
       <ref bean="goodsrService"/>
   </property>
</bean>


//Service层的bean
<bean id="goodsrService" class="cn.cqctlq.lqdc.service.impl.GoodsrServiceImpl" >
    <property name="goodsrDao" ref="goodsrdaoimplTarget"></property>
    <property name="checkInoutDao" ref="checkinoutdaoimplTarget"></property>
    <property name="positionDao" ref="positiondaoimplTarget"></property>
    <property name="companyDao" ref="companydaoimplTarget"></property>
     <property name="associatecompanyDao" ref="associatecompanydaoimplTarget"></property>
</bean>


//Action层的、注入封装过后的goodsrServiceimplTarget
<bean id="GoodsrAction"
      class="cn.cqctlq.lqdc.web.action.GoodsrAction">
      <property name="goodsr">
          <ref bean="Goodsr"/>
      </property>
      <property name="goodsrService">
      <ref bean="goodsrServiceimplTarget" />
      </property>   
       <property name="associatecompanyService">
      <ref bean="associatecompanyService" />
      </property>    
</bean>
2012年9月07日 00:04

1个答案 按时间排序 按投票排序

0 0

引用
在项目Service层 用spring的代理封装了事务配置后注入到Action进去准备用发现注入的不是包装过后代理的代理类,变成了普通Service类了测试发现、Service层的事务是封装成功的,并能正确作用。

你怎么确定注入的不是代理类。
System.out.println(AopUtils.isAopProxy(api));  ----用来判断你的类是不是代理类
   isCglibProxy 判断是否CGLIB代理类  isJdkDynamicProxy 判断是不是JDK动态代理类

System.out.println(api.getClass());  如果是代理类将输出代理类的类
System.out.println(api);   默认调用toString方法 ---->会转调目标对象的方法 因此是输出目标对象的toString

引用
Service层的事务是封装成功的,并能正确作用。

这不说明注入成功了?


在Action中,如果不用注入的方式使用,而是利用上下文去把这个封装的事务bean取出来,也能正确使用。。。不过。。感觉这样相当的挫。。咋个注入的方式就不行呢。。

不需要这样,肯定用法有错误。

2012年9月07日 06:56

相关推荐

    action层,dao层 ,service层,entity层1

    通常,Action层会调用Service层来执行具体的业务操作,并将结果返回给前端。在Struts2框架中,Action类就是这样的角色,它封装了用户请求,并转发给相应的Service进行处理。 2. **DAO层(数据访问层)**: DAO层是...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    - **Action**:接收请求并调用Service层进行处理。 5. **整合测试**:完成各层的编码后,需要进行综合测试以确保所有部分都能正常工作。这包括单元测试、集成测试等。 #### 四、总结 Spring框架的强大之处在于它...

    jsp、servlet进行增删改查,dao层和service层分开

    4. **Service层**:Service层是业务逻辑层,它封装了具体的业务规则和流程,是DAO层和Servlet之间的桥梁。Service层会调用DAO层的方法来执行数据库操作,并处理可能出现的异常。例如,当用户请求删除一个记录时,...

    SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取

    Service层是业务逻辑处理的核心,负责封装数据访问层(Dao)的操作,以提供给控制层(Action)调用。在本例中,我们首先完善了`CategoryService`接口,定义了基本的CRUD方法,包括`save()`、`update()`、`delete()`...

    ssh.rar_Action!_service dao_ssh action_ssh com.dao_ssh dao

    在“service_dao”标签中,Service层是业务逻辑的封装,负责处理复杂的业务规则和事务管理。它通常调用DAO层来与数据库交互。DAO接口定义了数据库操作,而其实现类则使用Hibernate等ORM(对象关系映射)工具来完成...

    在一个ssh框架的项目当中,页面、action、service、model、dao1

    描述中提到的"action调用service",表明Action会调用由Spring管理的Service对象来执行具体的业务逻辑。 **Service** 层是业务逻辑层,它封装了应用程序的核心业务功能。Service通常会依赖于DAO来与数据库进行交互,...

    使用hibernate封装方法

    通常,我们会在DAO(数据访问对象)层进行这些封装,将数据库的CRUD(创建、读取、更新、删除)操作隔离,以便服务层(Service)可以方便地调用。 1. **DAO设计**: - DAO接口定义了所有对数据库的操作,例如`save...

    对SSH整合的封装

    5. **整合工作**:在Struts2的Action中注入由Spring管理的Service,Service中再注入由Spring管理的DAO,这样Action就可以间接地调用到Hibernate的持久化操作。 6. **测试**:编写JUnit测试用例,验证SSH整合是否...

    第4章注册、登录和注销.pptx

    Action层调用Service层结束会话,清理用户信息。 总结来说,注册、登录和注销是Web应用的基本需求,它们涉及到前端界面设计、后端业务逻辑实现、数据库操作以及会话管理等多个方面。通过理解DAO模式、Hibernate、...

    spring3 mvc 注解action dao service 实例教程

    服务层的职责是对业务逻辑进行封装,提供统一的接口供控制器调用。 ```java @Service public class AccountService { @Autowired private AccountRepository accountRepository; public List&lt;Account&gt; ...

    SSH三层架构整合

    Service层可以调用DAO(数据访问对象)层来操作数据。 - **数据访问层(Data Access Layer)**:Hibernate在此层中工作,处理数据库的交互,如数据的增删改查。DAO层封装了数据库操作,使业务逻辑层与数据库细节...

    soap规范web service调用

    ### SOAP规范Web Service调用详解 #### 一、SOAP简介 **SOAP**(Simple Object Access Protocol)是一种基于XML的标准协议,用于在分布式环境中交换结构化的信息。它定义了一种消息格式,使得不同应用之间可以通过...

    SSH框架封装demo

    6. **Service层**:作为业务逻辑的核心,可能会使用Spring的注解进行事务管理。 7. **DAO层**:与数据库交互,使用Hibernate的API进行CRUD操作。 8. **视图层**:可能包含JSP页面,展示了如何接收Struts2传递的数据...

    一个最简单的SSH框架

    service 为 action 提供统计的调用接口,封装持久层的 DAO. 2 .可以写一些自己的业务方法。 3 .统一的 javabean 管理方法 4 .声明式事务管理 5. 集成 Hiberante 3 ) Hiberante ,负责持久化层,完成数据库...

    SSH框架整合[总结].pdf

    Service层封装了DAO(Data Access Object),提供业务接口给Action调用,同时Spring还支持声明式事务管理,确保了业务操作的一致性。此外,Spring还包含了AOP(面向切面编程)机制,用于事务控制和其他横切关注点,...

    SSH框架整合

    - 增删改查:Service层封装了数据库操作,如登录验证,调用DAO的query方法获取数据,对比用户名和密码,最后返回结果给Action。 - 事务管理:Spring的AOP模块用于管理Service层的事务,确保数据的一致性。 3. ...

    java调用.net发布的webservice(asmx)

    此外,为了优化性能和提高可维护性,可以考虑使用Spring框架集成CXF,将Web服务调用封装为一个服务层。Spring提供了方便的CXF客户端支持,可以更方便地管理Web服务的生命周期和事务控制。 总结起来,Java调用.NET ...

    ssh 架构描述

    在业务层,Spring提供了Service(或Manager)接口,Action通过依赖注入获取Service实例,从而调用业务方法。Spring还封装了DAO(Data Access Object)层,使得Service可以调用DAO来操作数据。此外,Spring还支持声明...

    SSH知识回顾与整合说明

    传统的SSH项目实现中,Dao层调用Hibernate操作数据库,Service层new Dao对象并调用其方法,Action层new Service对象并调用Service方法。 5. Spring的IoC管理 Spring的核心是IoC,通过配置文件管理对象,避免手动...

    ldap组织机构同步

    在"ldap组织机构同步"场景下,Action层可能包含用户同步的触发逻辑,如定时任务、按钮点击事件等,它们会调用Service层的方法执行实际的同步操作。 5. **Service层** Service层是业务逻辑的中心,它封装了与LDAP...

Global site tag (gtag.js) - Google Analytics