spring java config transaction

저번 포스팅에서 rollback이 안되는 문제 있었다. rollback도 안됐지만 service 계층의 영속성도 안됐다(물론 당연한 얘기지만)
해결은 했는데 잘 모르겠다.
RootContext를 버리니 잘 된다.
그래서 다시 책을 봤다. 하지만 안보인다.(대충 봐서)
다시 생각이 나서 김영한님의 github를 봤다.
RootContext가 없다.
솔직히 아직 잘 모르겠다. root와 servlet context의 대해.. 토비님 책을 다시 읽어야 겠다.
servlet이 하나라면 굳이 분리할 필요도 없다고 하는거 같기도 하고..
아무튼 지금은 잘모르겠다. 일단 나중에 다시 살펴보겠다.

이렇게 바꾸었다.

@Configuration
@EnableWebMvc
@ComponentScan(
  basePackages = "me.wonwoo.account"
)
@Import(RootConfiguration.class)
public class MvcConfiguration extends WebMvcConfigurerAdapter {
  //...
}
  @Override
  public void onStartup(ServletContext servletContext) throws ServletException {
//    AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
//    rootContext.register(RootConfiguration.class);

    AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
    dispatcherServlet.register(MvcConfiguration.class);
    servletContext.addListener(new ContextLoaderListener(dispatcherServlet));

   //...
   //...
}

롤백도 되고 service에 영속성도 된다.
소스가 다시 개판 되었다..ㅡㅡ

save하면서 한건입력 후 강제로 에러를 냈다.
아무튼 소스는 다시 올려놔야 겠다.

@Transactional
public Account save(Account account) {
  accountRepository.save(account);
  throw new RuntimeException();
}

에러는 내는 부분

@Transactional(readOnly = true)
public Account findOne(Long id) {
  Account one = accountRepository.findOne(id);
  Product order = one.getOrder();
  order.getOrderedName();
  return one;
}
@OneToOne(fetch = FetchType.LAZY)

service 계층에 영속성 테스트 하는 부분

물론 일단 지금은 EAGER로 바꿔놨다.