본문 바로가기

책 정리19

6.2. 스프링 AOP 1. 자동 프록시 생성 중복 문제 제거하기 매번 ProxyFactoryBean 들을 복사하여 등록해야하는 문제 (실수하기 쉽다.) 해결법 1. 빈 후처리기 (BeanPostProcessor) 를 이용한 자동 프록시 생성기 BeanPostProcessor 인터페이스를 구현 (DefaultAdvisorAutoProxyCreator) 해서 만드는 빈 후처리기 DefaultAdvisorAutoProxyCreator (Advisor를 이용한 자동 프록시 생성기) 를 이용해보자. 사용법 // Advice 등록 @Bean public TransactionAdvice transactionAdvice() { TransactionAdvice transactionAdvice = new TransactionAdvice(); .. 2021. 2. 10.
6.1. AOP 1. 메소드 추출 현재 upgradeLevels() 메소드는 트랜잭션으로 감싸져있다. 트랜잭션은 전, 후만 수행되면 되므로 로직 부분은 메소드 추출을 통해 바꿔보자 public void upgradeLevels() { TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); try { List users = userDao.getAll(); for (User user : users) { if(canUpgradeLevel(user)) { upgradeLevel(user); } } transactionManager.commit(status); } catch (RuntimeException e).. 2021. 2. 2.
5. 서비스 추상화 1. 트랜잭션 경계설정 JDBC의 트랜잭션 하나의 커넥션을 가져와 사용하다가 닫는 사이에 이루어진다. 따라서 트랜잭션은 커넥션과 주기를 같이한다. Connection c = dataSource.getConnection(); c.setAutoCommit(false); // 트랜잭션 시작 try { PreparedStatement ps = c.prepareStatement("update user..."); c.commit(); // 트랜잭션 커밋 catch (Exception e) { c.rollback(); // 트랜잭션 롤백 } } 2. 트랜잭션 동기화 트랜잭션 동기화란? Connection 오브젝트를 특별한 저장소에 보관해 둔 뒤, 가져다 쓰는 방식이다. 트랜잭션 동기화 적용 TransactionSyn.. 2021. 2. 1.
4. 예외 1. 예외의 종류와 특징 1. Error java.lang.Error 클래스의 서브클래스 시스템에서 비정상적인 상황이 생기는 경우 (OutOfMemoryError / ThreadDeath) -> catch 블록으로 잡아도 아무 대응을 할 수 없음 2. Exception 과 체크 예외 java.lang.Exception 클래스와 그 서브클래스들 이며 RuntimeException을 상속받지 않은 Exception 들 throws 혹은 try/catch 사용이 강제된다. -> 사용하지 않으면 컴파일에러가 날 수 있다. ex) IOException / SQLException 등, 예외상황에서 던져질 수 있는 것들 3. RuntimeException 과 언체크/런타임 예외 체크예외와는 다르게, 예외처리를 강제하.. 2021. 1. 30.