본문 바로가기

책 정리/토비의 스프링9

8. 스프링이란 무엇인가 0. 스프링이란? 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 0.1. 어플리케이션 프레임워크 웹 계층을 MVC 구조로 손쉽게 만들수 있도록 도움을 준다. 포맷과 출력장치를 유연하게 변경할 수 있는 로그기능을 제공한다. ORM 기술을 제공한다. 0.2. 자바 엔터프라이즈 개발을 편하게 개발자가 복자하고 실수하기 쉬운 로우레벨 기술에 많은 신경을 쓰지 않고, 비즈니스 로직을 빠르고 효과적으로 구현하는 것 1. POJO 란 특정 규약에 종속되지 않는다. ex) 어떤 클래스를 필수적으로 상속해야하나던지, 어떤 DTO 를 필수적으로 구현해야 한다던지.. 특정 환경에 종속되지 않는다. ex) EJB 를 사용하기 위해서는 JNDI 서버가 필수적인 경우 ex) 비즈니스 코드에 Htt.. 2021. 2. 20.
7. 스프링 핵심 기술의 응용 1. Sql 과 Dao의 분리 현재의 구조는 Dao 내부에서 Sql을 정의하여 사용하도록 되어있다. 토비의 스프링에서는 이를 JAXB api를 사용하여 xml에 따로 sql을 관리하도록 하여 저장하도록 구현한다. 변경된 현재구조는 아래와 같다. public class XmlSqlService implements SqlService { private Map sqlMap = new HashMap(); public XmlSqlService() { String contextPath = Sqlmap.class.getPackage().getName(); try { JAXBContext context = JAXBContext.newInstance(contextPath); Unmarshaller unmarshaller.. 2021. 2. 14.
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.