当前位置: 首页 > 知识库问答 >
问题:

使Spring 3 MVC控制器方法事务化

云欣嘉
2023-03-14

我正在使用Spring3.1并编写了我的DAO和服务层(事务性)。

但是,在一个特殊情况下,为了避免惰性初始化异常,我必须创建一个spring mvc请求处理程序method@transactional。但无法将事务附加到该方法。方法名为ModelAndView home(HttpServletRequest request、HttpServletResponse response)。http://forum.springsource.org/showthread.php?46814-transaction-in-mvc-controller在此链接中,似乎不可能将事务(默认情况下)附加到mvc方法。该链接中建议的解决方案似乎适用于Spring2.5(重写handleRequest)。我们会非常感激你的帮助。谢谢

@Controller
public class AuthenticationController { 
@Autowired
CategoryService categoryService;    
@Autowired
BrandService brandService;
@Autowired
ItemService itemService;

@RequestMapping(value="/login.html",method=RequestMethod.GET)
ModelAndView login(){       
    return new ModelAndView("login.jsp");       
}   
@RequestMapping(value="/home.html",method=RequestMethod.GET)
@Transactional
ModelAndView home(HttpServletRequest request, HttpServletResponse response){
    List<Category> categories = categoryService.readAll();
    request.setAttribute("categories", categories);     
    List<Brand> brands = brandService.readAll();
    request.setAttribute("brands", brands);     
    List<Item> items = itemService.readAll();
    request.setAttribute("items", items);
    Set<Image> images = items.get(0).getImages();
    for(Image i : images ) {
        System.out.println(i.getUrl());
    }
    return new ModelAndView("home.jsp");    
}

共有1个答案

鄢松
2023-03-14

您需要实现一个接口,使Spring具有可以用作代理接口的功能:

@Controller
public interface AuthenticationController {
  ModelAndView home(HttpServletRequest request, HttpServletResponse response);
}

@Controller
public class AuthenticationControllerImpl implements AuthenticationController {

@RequestMapping(value="/home.html",method=RequestMethod.GET)
@Transactional
@Override
ModelAndView home(HttpServletRequest request, HttpServletResponse response){
.....
}
}
 类似资料:
  • 本文向大家介绍Jmeter逻辑控制器事务控制器使用方法解析,包括了Jmeter逻辑控制器事务控制器使用方法解析的使用技巧和注意事项,需要的朋友参考一下 一、基本概念: Transaction controller:一般是指要做的或所做的事情,在关系数据库一个事务可以是一条SQL语句,一组SQL语句或整个程序、在实际的工作过程中,将完成一个业务的一系列操作称作为事务,我们来举最为典型的用户登录场景为

  • 我有一个在事务控制器中分组HTTP请求的测试计划,例如: 现在,我需要控制此类事务的请求速率,而不是单个请求。例如,我可能希望每分钟有60个事务控制器实例 有一个恒定吞吐量计时器,据我所知,它用于控制单个请求的吞吐量。例如,如果我将恒定吞吐量计时器吞吐量设置为每分钟60个,JMeter将在avg上每分钟给我60个请求,但不是每分钟给我60个事务控制器实例。 将JMeter配置为每分钟有60个事务控

  • 为了一致性和简单性,我想在我的控制器周围传递一个会话范围的域bean,但这似乎不可能。希望有人能提出建议。 问题:会话范围的bean可以作为MVC控制器参数公开吗 这里似乎有一个注释:@SessionAttributes(“myBean”),但是它只维护一个控制器级别的作用域。 我希望避免与HttpSession交互,而是通过控制器一致地传递域对象图。这似乎是一个相当标准的要求。 这有以下好处:

  • 问题内容: 为什么无法从另一个内部访问其他控制器方法呢? 像这样。 已编译 如果您不能这样做,那为什么不呢?我还应该怎么做… 问题答案: 最近几个小时遇到相同的问题。我使用了api / services文件夹。它可能不完全是您所需要的,但是它是一个选择。

  • 在上面的代码中,ConstraintViolationException发生在saveTicket()方法内,saveTicket()内的dao甚至在捕获异常之前就已经回滚了它的事务(这是我所知道的),第一个没有回滚,因为它在另一个事务中。(这是我已经知道的行为)。 当我使用另一个事务性方法调用这两个预览方法(updateRequest()和saveTicket()),当saveTicket()方

  • 我试着从服务中获得一个多人关系(课程-学生),并将结果传递给管理员。当我在服务中时,由于事务性注释,没有抛出懒散的初始化异常(LazyInitializationException)。但是,当我在控制器中时,会抛出懒散初始化异常(在获取课程学生时),因为会话已关闭。我如何解决此问题,而不急于获取集合 这是我的代码: Couse Model 学生模型 课程存储库 课程服务 航向控制员 应用属性 提前