@Transactional methods in @Controller class are not considred as transactional

前端 未结 2 1947
面向向阳花
面向向阳花 2020-12-21 14:31

I noticed that the following is not working in a class marked as a @Controller:

@Autowired
SessionFactory sessionFactory;

@ResponseBody
@Transa         


        
相关标签:
2条回答
  • 2020-12-21 15:13

    Don't do transactions in your controller. Put them in your service layer classes.

    Separate your code into model-view-controller.

    Yes it is a conspiracy. It enables to you to share code between controllers/views without repeating code. And also stops rollbacks of transactions unnecessarily (for exceptions unrelated to the actual transaction).

    It might seem like more code to begin with, but in the long run it is much more manageable and simpler to develop.

    0 讨论(0)
  • 2020-12-21 15:23

    Probably you have two application contexts here: main Spring context loaded by ContextLoaderListener and a child context loaded by DispatcherServlet. You need to put <tx:annotation-driven /> in the configuration loaded by the child context too. If you show us your web.xml file maybe I can help you more.

    Anyway, as @NimChimpsky says, is usually not a good practice to manage transactions in your controller layer.

    0 讨论(0)
提交回复
热议问题