AOP를 바르게 이용하려면 등장배경과 스프링이 도입한 이유, 그에 대한 장점이 무엇인지에 대한 충분한 이해가 필요하다. 6.1 트랜잭션 코드의 분리 트랜잭션 인터페이스를 썼음에도 비즈니스 로직 내 트랜잭션코드가 많다. 하지만 트랜잭션의 경계는 비즈니스 로직의 전후에 설정돼야 하는 것이니 문제가 없다. 메소드 분리 UserService.java public void upgradeLevels() throws Exception { TransactionStatus status = this.transactionManager.getTransaction(new DefaultTransactionDefinition()); try { List users = userDao.getAll(); for (User user : u..