2021–01–31

w ho
2 min readJan 31, 2021

--

[JAVA 관련]

@RestController

  • RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것입니다.
  • @RestController 는 @Controller 어노테이션과 @ResponseBody 어노테이션을 합쳐놓은 어노테이션이다. 클래스 상단에 @RestController 어노테이션을 선언하면 Method마다 @ResponseBody를 붙여 주지 않아도 된다.
결론 일반적은 Spring MVC @Controller와 RESTful 컨트롤러인 @RestController의 차이점은 HTTP Response Body가 생성되는 방식이다.@Controller 는 View Page를 반환하지만, @RestController는 객체(VO,DTO)를 반환하기만 하면, 객체데이터는 application/json 형식의 HTTP ResponseBody에 직접 작성되게 된다.

@Transactional

  • 스프링에서 사용되는 트랜젝션 어노테이션
  • 자동으로 해당 메소드에 걸어 놓으면 오류 동작시 ROLLBACK을 적용한다.
  • 오류가 나더라도 RETURN값이 있으면 ROLLBACK이 되지 않는다.
  • 스프링은 RuntimeException 과 Error를 기본적으로 롤백 정책으로 이해합니다. 참고로 NullPointerException 은 RuntimeException (UnCheckedException) 이기 때문에 디폴트로 롤백이 됩니다.
-transaction rollback 처리 모든 예외에 대해서 전부 트랜잭션을 롤백하고 싶다면
rollbackFor = {Exception.class} 을 해야한다 .
@Transactional(rollbackFor = {Exception.class})
  • 예외 안에서 return 값을 반환하면 오류로 인식 안해 rollback을 안함
DbTransaction transaction = null;transaction = this.beginTransaction();
...
transaction.commit();
...
try {}
catch(Exception e) {if (transaction != null) {transaction.rollback();}
}

--

--

No responses yet