목록코드스테이츠 (39)
Develog

오늘은 Section2의 마지막 날이였다. 처음에 이곳에 왔을 때를 다시 생각 해보면 그때에 비해 현재의 나는 언어에 대한 개념이나 응용할 수 있는 사고가 확실히 많이 좋아진 기분이다. 이번 섹션에서는 스프링 프레임워크에서 가장 중요한 핵심 개념인 DI, AOP 등에 대해 학습을 했다. 사실 아직까지는 전체적인 그림을 그리지 못해서인지 이해가 되지 않는 부분이 너무 많았다. 별도로 강의를 구매해 학습과 병행했지만 항상 느끼는 점은 강의를 통해 부족한 개념을 학습하더라도 이미 진도는 저 멀리에 있는 기분이다. Section1 때부터 이런 느낌을 많이 받아 힘이 들었던 경험이 있기에 Section2 만큼은 제대로 따라가리라 각오했지만 역시나 부족했다. 하지만 이렇게 부정적인 부분만 생각하며 개선할 생각을 하..

Pointcut 표현식 포인트컷과 표현식 & 지시자 포인트컷은 관심 조인 포인트를 결정하므로 어드바이스가 실행되는 시기를 제어할 수 있다. AspectJ는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공한다. ex) @Pointcut("execution(* hello.aop.order..*(..))") 포인트컷 표현식은 AspectJ가 제공하는 포인트컷 표현식을 줄여서 표현하는 것이다. 포인트컷 지시자 포인트컷 표현식은 execution 같은 포인트컷 지시자(Pointcut Designator, PCD)로 시작한다. 종류 설명 execution 메서드 실행 조인트 포인트를 매칭한다. 스프링 AOP에서 가장 많이 사용하며, 기능도 복잡하다. within 특정 타입 내의 조인 포인트를 매칭한다. ar..

학습 목표 AOP의 의미를 이해할 수 있다. AOP가 필요한 이유에 대해 이해할 수 있다. AOP에서 사용되는 용어들에 대해 이해할 수 있다. 타입별 Advice, Pointcu 표현식, JointPoint 등의 의미를 이해할 수 있다. 애너테이션을 이용한 AOP에 대해 이해할 수 있다. AOP가 필요한 이유 먼저 그 전에 객체 지향 프로그래밍(Object Oriented Programming:OOP)에 대해 다시 생각해보자 이전과 현재에 많은 프로젝트는 OOP 패러다임을 지향하며 프로그래밍을 하고 있다. OOP의 핵심은 공통된 목적을 띈 데이터와 동작을 묶어 하나의 객체로 정의하는 것이다. 객체를 적극적으로 활용함으로써 기능을 재사용할 수 있는 것이 큰 장점이다. 객체를 잘 활용하기 위해선 관심사 분리..

학습 내용 스프링에서 DI 할 수 있는 다양한 의존관계 주입 방법에 대해 학습합니다. 생성자 주입 방법(Constructor-based DI)를 권장하는 이유를 학습합니다. 의존 관계 주입 방법 중 수정자 주입(Setter-based DI)와 필드 주입(Field-based DI)의 단점들에 대해 학습합니다. Spring DI(Dependency Injection) 4가지 의존관계 주입 방법이 있다. 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법이다. 생성자에 @Autowired를 하면 스프링 컨테이너에 @Component로 등록된 빈에서 생성자에 필요한 빈들을 주입한다. 여기서 잠깐! @Component는 무엇일까? ..

학습 목표 Spring 컨테이너(Container)와 빈(Bean)의 의미를 이해할 수 있다. 빈 스코프(Bean Scope)의 의미를 이해할 수 있다. Java 기반 컨테이너(Container) 설정에 대해 이해할 수 있다. Spring DI(Dependency Injection)의 의미를 이해할 수 있다. Component 스캔에 대해 이해할 수 있다. Spring 컨테이너(Container)와 빈(Bean) 스프링 컨테이너(Spring Container) 스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트이다. 스프링 컨테이너는 내부에 존재하는 애플리케이션 빈(Bean은 생성, 관리, 제거 등의 역할을 담당)의 생명주기를 관리한다. Spring에 의하여 생성되고 관리되는 자바 객체를 Bean 이라고..

학습 목표 AOP(Aspect Oriented Programming) PSA(Portable Service Abstraction) AOP(Aspect Oriented Programming) AOP란 무엇일까? AOP를 한글로 번역하면 관심 지향 프로그래밍 이라고 한다. 그렇다면 관심(Aspect)을 지향하는 프로그래밍에서 관심은 무엇을 의미하는걸까? AOP에서의 Aspect는 부모들이 가지고 있는 아기의 건강 같은 공통 관심사와 비슷한 느낌으로 생각하자 즉 애플리케이션에 필요한 기능 중에서 공통적으로 적용되는 공통 기능에 대한 관심과 관련이 있다고 볼 수 있다. 애플리케이션을 개발하다보면 애플리케이션 전반에 걸쳐 공통적으로 사용 되는 기능들이 있기 마련인데, 이러한 공통 기능들에 대한 관심사를 바로 공통..