스프링 6

[토비의 스프링vol.1 8장] 스프링이란 무엇인가?

8장 스프링이란 무엇인가 정리 노션 페이지 8장 스프링이란 무엇인가? 8.1 스프링의 정의 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션 프레임워크란? 일반적인 라이브러리나 프레임워크, 특정 계층에서 동작하는 한 가지 기술 분야에 집중 ex1) 웹 계층을 MVC 구조로 손쉽게 만들 수 있게 함 ex2) 포맷과 출력장치 유연하게 변경가능한 애플리케이션 로그 기능 제공 ex3) 관계형 DB와 자바 obj 매핑해주는 ORM 기술 제공 등 애플리케이션 프레임 워크 특정 계층,기술, 업무 분야에 국한 X, 애플리케이션 전 영역을 포괄하는 범용적인 프레임워크 애플리케이션 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심 기술을 바탕으로 각 분야의 특성에 맞는 필요를 채워..

[토비의 스프링vol.1 6장] AOP - 2

6장 AOP-2 정리 노션 페이지 스프링 AOP 자동 프록시 생성 프록시 팩토리 빈 방식의 한계로 인한 문제점 부가기능이 타깃 오브젝트마다 새로 만들어지는 문제 → ProxyFactoryBean 어드바이스 통해 해결 부가기능 적용이 필요한 타깃 오브젝트마다 비슷한 내용의 ProxyFactoryBean 설정정보 추가 → 어떻게 중복을 제거할까? 중복 문제의 접근 방법 다이내믹 프록시라는 런타임 코드 자동생성 기법을 통해 프록시 클래스 코드의 중복문제 해결 → ProxyFactoryBean설정 문제에도 자동등록/생성 기법 사용할 수 있을까? → 일정한 타깃 빈의 목록을 제공하면, 자동으로 각 타깃 빈에 대한 프록시를 만들어주는 방법 → 하지만 지금까지는 위의 방법이 없었음 빈 후처리기를 이용한 자동 프록시 ..

[토비의 스프링vol.1 6장] AOP - 1

AOP-1 정리 노션 페이지 AOP 적용 대상 : 선언적 트랜잭션 6.1 트랜잭션 코드의 분리 6.1.1 메소드 분리 비즈니스 로직과 트랜잭션 경계설정은 완벽하게 독립적 트랙잭션의 시작과 종료 사이에 비즈니스 로직이 실행되는 조건만 지키면 됨 → 비즈니스 로직을 담당하는 코드를 메소드로 추출해서 독립 6.1.2 DI를 사용한 클래스의 분리 비즈니스 로직 분리 but 트랜잭션 담당 코드가 여전히 서비스 안에 있음 DI 의 기본 아이디어 : 실제 사용할 오브젝트의 클래스 정체는 감추고 인터페이스 통해 간접 접근 → 이로 인해 구현 클래스를 외부에서 자유롭게 변경 가능 인터페이스 이용해 구현 클래스 클라이언트에 노출하지 않고 런타임 시에 DI를 통해 적용하는 방법을 쓰는 이유 → 구현 클래스를 상황에 따라 바..

[토비의 스프링vol.1 5장] 서비스 추상화

5장 서비스 추상화 트랜잭션 서비스 추상화 작업 중 예외가 발생해 완료 되지 않았다면 ? -> 작업이 시작되지 않은 것처럼 초기 상태로 되돌려 놓아야한다. 이것이 트랜잭션이다. 트랜잭션 : 더 이상 나눌 수 없는 단위 작업 (원자성) 트랜잭션 경계 설정 트랜잭션 롤백 : 취소 작업 트랜잭션 커밋 : 작업 확정시킴 트랜잭션 경계 : 트랙잭션이 시작되고 끝나는 위치 롤백을 위해서는 여러 개의 작업을 1개의 트랜잭션으로 관리 해야 함 트랜잭션 동기화 JDBC 기준, 트랜잭션 유지하려면 시작-끝까지 같은 Connection 유지 -> Connection 파라미터로 전달하면 데이터 엑세스 기술에 독립적 X -> JPA 등으로 구현 방식 변경하면 인터페이스 DAO 다 수정해야함(DI 적용 안 되는 것) -> 동기화..

[토비의 스프링vol.1 4장] 예외처리

예외의 종류와 특징 체크예외 : 명시적인 처리가 필요한 예외, throw를 통해 발생시킬 수 있는 예외 = 일반적인 예외 Error java.lang.Error 클래스의 서브클래스 시스템에 비정상적인 상황이 발생했을 경우(VM에서 발생시키는 것, 애플리케이션 코드 X) 애플리케이션에서는 이런 에러에 대한 처리는 신경 쓰지 않아도 됨 Exception 애플리케이션 코드 작업 중에 예외상황이 발생했을 경우 체크 예외 RuntimeException 클래스 상속 X 언체크 예외 = 런타임 예외 RuntimeException 클래스 상속 O - 특별하게 다룸 명시적인 예외처리 X (catch로 잡거나 throws 선언 안 해도 됨) NullPointerException, IllegalArgumentExceptio..

[토비의 스프링vol.1 3장] 템플릿

3장 템플릿 개방 폐쇄 원칙: 확장에는 자유롭게 열려 있고 변경에는 굳게 닫혀있다. 템플릿 : 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있는 방법이다. 분리와 재사용을 위한 디자인 패턴 적용 내부 클래스 클래스 분리와 DI 템플릿과 콜백 정리 예외처리 예외처리 필요성 : 예외가 발생했을 경우에도 사용한 리소스를 반드시 반환해야 한다. try/catch/finally 코드의 복잡도가 너무 높다. 모든 메소드마다 반복된다. 분리와 재사용을 위한 디자인 패턴 적용 변하는 부분을 변하지 않는 나머지 코드에서 분리 변하는 부분 : 쿼리 수행 변하지 않는 부분 : try/cat..