JAVA/Spring(111)
-
7. AOP 프로그래밍 #3 스프링 AOP 구현
본 글은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 도서의 내용을 복습하기 위해 작성된 글입니다. 7.3 스프링 AOP 구현 스프링 AOP를 이용한 공통 기능 구현 방법 Aspect로 사용할 클래스에 @Aspect 애노테이션을 붙인다. @Pointcut 애노테이션으로 공통 기능을 적용할 Pointcut을 정의한다. 공통 기능을 구현한 메서드에 @Around 애노테이션을 적용한다. 3.1 @Aspect, @Pointcut, @Around를 이요한 AOP 구현 공통 기능을 제공하는 Aspect 구현 클래스를 만들고 자바 설정을 이용해서 Aspeect을 어디에 적용할지 설정하면 된다. Aspect는 @Aspect 애노테이션을 이용해서 구현한다. 프록시는 스프링 프레임워크가 알아서 만들어준다. 실행시간을 ..
2021.07.27 -
7. AOP 프로그래밍 #2-1 AOP
본 글은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 도서의 내용을 복습하기 위해서 작성된 글입니다. 7.2.1 AOP AOP는 Aspect Oriented Programming의 약자로, 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 재사용성을 높여주는 프로그래밍 기법이다. AOP는 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어준다. AOP의 기본 개념 핵심 기능에 공통 기능을 삽입하는 것이다. 즉 핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것이 AOP이다. 핵심 기능에 공통 기능을 삽입하는 방법 컴파일 시점에 공통 기능을 삽입하는 방법 AOP 개발 도구가 소스 코드를 컴파일 하기 전에 공통 구현 ..
2021.07.27 -
7. AOP 프로그래밍 #2 프록시(Proxy)와 AOP
본 글은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 도서의 내용을 복습하기 위해 작성된 글입니다. 7.2 프록시와 AOP 팩토리얼 메소드의 수행시간을 알고 싶다고 가정하자. 쉬운 방법은 메소드의 시작과 끝에서 시간을 구하고 이 두시간의 차이를 출력하는 것이다. 예를 들어 아래의 ImpleCalculator 클래스를 다음과 같이 수정하면 된다. 팩토리얼 메소드에서 수행시간을 출력하는 기능을 추가한 예제 public class ImpleCalculator implements Calculator{ @Override public long factorial(long num) { long start = System.currentTimeMillis(); long result = 1; for(long i=1; i
2021.07.27 -
7. AOP 프로그래밍 #1 프로젝트 준비
본 글은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 도서의 내용을 복습하기 위해 작성된 글입니다. 7.1 프로젝트 준비 step1 메이븐 프로젝트의 pom.xml 파일에 aspectj.weaver 의존을 추가 후 컴파일 4.0.0 sp5 sp5-chap07 0.0.1-SNAPSHOT org.springframework spring-context 5.0.2.RELEASE org.aspectj aspectjweaver 1.8.13 maven-compiler-plugin 3.7.0 1.8 1.8 utf-8 step2 mvn compile step3 IDE에서 Import 수행 AOP 실습을 위한 클래스 정의 1. Calculator.java package chap07; public interface Ca..
2021.07.27 -
4. 의존 자동 주입 #6 자동 주입과 명시적 의존 주입 간의 관계
본 글은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 도서의 내용을 복습하기 위해 작성된 글입니다. 6. 자동 주입과 명시적 의존 주입 간의 관계 스프링 설정 클래스의 자동 주입 대상인 빈 설정 메서드에서 명시적으로 세터 메소드를 수행하여 명시적으로 의존 주입을 했을때 어떻게 되는가? AppCtx 클래스의 infoPrinter 메서드 변경 @Configuration public class AppCtx { @Bean public MemberDao memberDao() { return new MemberDao(); } @Bean public MemberRegisterService memberRegSvc() { return new MemberRegisterService(); } @Bean public Ch..
2021.07.12 -
4. 의존 자동 주입 #5 @Autowired 애노테이션의 필수 여부
본 글은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문 도서의 내용을 복습하기 위해 작성된 글입니다. 5. @Autowired 애노테이션의 필수 여부 @Autowired 애노테이션의 필수 여부를 지정하는 3가지 방법이 존재한다. @Autowired 애노테이션 필수여부 첫번째 방법 (requied=false) public class MemberPrinter { private DateTimeFormatter dateTimeFormatter; public void print(Member member) { ... 생략 } @Autowired(required = false) public void setDateTimeFormatter(DateTimeFormatter dateTimeFormatter) { this...
2021.07.12