기존 DAO 클래스 구성을 보면 코드 양이 상당히 길어지는 단점이 있다. JDBCUtil 클래스를 이용하여 커넥션 연결과 해제 로직을 대체한다고 하더라도 많은 양의 코드가 필요하고, 다른 메소드들을 구현할 때마다 반복해서 작성해야 한다는 단점이 있다. 스프링은 이러한 문제를 해결함과 동시에 JDBC 기반의 DB 연동 프로그램을 쉽게 개발할 수 있도록 JdbcTemplate 클래스를 지원한다. 1. JdbcTemplate 클래스 JDBC의 반복적인 코드를 제거하기 위해 제공하는 클래스. 따라서 DAO 클래스에서는 JdbcTemplate 클래스가 제공하는 템플릿 메소드를 호출하여 DB 연동을 간단하게 처리. JdbcTemplate 클래스 내부적으로 JDBC API를 이용하여 실제 DB 연동 작업을 처리하기 ..
스프링 설정 파일에 엘리먼트를 선언하면 스프링 컨테이너가 AOP 관련 어노테이션들을 인식하고 용도에 맞게 처리해준다. 또한 어드바이스 객체들은 설정 파일에 등록하거나 @Service 어노테이션을 사용하여 컴포넌트가 스캔될 수 있도록 해야한다. 1. 포인트컷 설정 어노테이션 설정으로 포인트컷을 선언할 때는 @Pointcut을 사용한다. 하나의 어드바이스 클래스 안에 여러 포인트컷을 선언할 수 있으며, 여러 포인트컷을 식별하기 위한 참조 메소드가 이용된다. 참조 메소드란 메소드 몸체가 비어있는 메소드로 단순 포인트컷을 식별하는 이름으로만 사용된다. 다음은 어노테이션 기반의 AOP와 XML 설정 기반의 AOP의 설정 차이이다. @Service @Aspect public class LogAdvice { /* 포..
스프링에서는 다음 다섯 가지의 어드바이스 동작 시점을 제공한다 - Before 비즈니스 메소드 실행 전 - After 비즈니스 메소드가 실행된 후, 무조건 실행 (finally) - After Throwing 비즈니스 메소드 실행 중 예외 발생 시 동작 (catch) - After Returning 비즈니스 메소드가 성공적으로 리턴되면 동작 - Around 메소드 호출 자체를 가로채 비즈니스 메소드 실행 전후에 처리할 로직을 삽입할 수 있음 (비즈니스 메소드 실행 전과 후에 모두 동작) Around 어드바이스 동작 예시 - Around 어드바이스 클래스 작성 public class AroundAdvice { public Object aroundLog(ProceedingJoinPoint pjp) throw..
Business Component 개발에서 가장 중요한 두가지 원칙 - 낮은 결합도 : Dependency Injection - 높은 응집도 : AOP 1. 관점 지향 프로그래밍 (AOP) - 메소드마다 공통으로 등장하는 코드 (로깅, 예외, 트랜잭션 처리 등) : 횡단 관심 - 사용자 요청에 따라 실제 수행되는 핵심 로직 : 핵심 관심 핵심 관심과 횡단 관심을 분리하는 것이 더욱 간결하고 응집도가 높은 코드를 유지할 수 있는 방법이다. 기존의 OOP 언어에서는 횡단 관심에 해당하는 공통 코드를 완벽하게 독립적인 모듈로 분리해내기 어렵다. Spring의 AOP는 이러한 한계를 극복할 수 있도록 도와준다. 2. AOP 설정 - build.gradle의 dependencies에 다음 문장을 추가 implem..