SPRING
-
어노테이션 기반 AOPSPRING 2021. 5. 26. 14:18
개인 공부 후 정리 목적의 글입니다. 어노테이션 사용을 위한 스프링 설정 AOP를 어노테이션으로 설정하려면 스프링 설정 파일(xml)에 엘리먼트를 선언해야된다. 엘리먼트를 선언하면 스프링 컨테이너는 AOP 관련 어노테이션들을 인식하고 용도에 맞게 처리해준다. AOP 관련 어노테이션들은 어드바이스 클래스에 설정한다. 그리고 어드바이스 클래스에 선언된 어노테이션들을 스프링 컨테이너가 처리하게 하려면 어드바이스 객체가 생성되어 있어야 한다. 즉, 어드바이스 클래스는 반드시 스프링 설정 파일에 등록하거나 @Service 어노테이션을 사용하여 컴포넌트가 검색될 수 있도록 해야 된다. Annotation 설정 @Service public class LogAdvice { } XML 설정 포인트컷 설정 - XML 설정..
-
JoinPointSPRING 2021. 5. 26. 10:32
개인 공부 후 정리 목적의 글입니다. 횡단 관심에 해당하는 어드바이스 메소드를 의미있게 구현하려면 클라이언트가 호출한 비즈니스 메소드의 정보가 필요하다. 스프링에서는 이런 다양한 정보들을 이용할 수 있도록 JoinPoint 인터페이스를 제공한다. JoinPoint 메소드 메소드 설명 Signature getSignature() 클라이언트가 호출한 메소드의 시그니처(리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체 리턴 Object getTarget() 클라이언트가 호출한 비즈니스 메소드를 포함하는 비즈니스 객체 리턴 Object[] getArgs() 클라이언트가 메소드를 호출할 때 넘겨준 인자 목록을 Object 배열로 리턴 Around 어드바이스 메소드를 구현할 때 사용한 Proceed..
-
어드바이스 동작 시점SPRING 2021. 5. 25. 10:57
개인 공부 후 정리 목적의 글입니다. 어드바이스(Advice) 각 조인포인트에 삽입되어 동작할 횡단 관심에 해당하는 공통 기능이며, 동작 시점은 각 AOP 기술마다 다르다. 동작 시점 설명 Before 비즈니스 메소드 실행 전 동작 After - After Retruning : 비즈니스 메소드가 성공적으로 리턴되면 동작 - After Throwing : 비즈니스 메소드 실행 중 예외가 발생하면 동작 (마치 try ~ catch 블록에서 catch 블록에 해당) - After : 비즈니스 메소드가 실행된 후, 무조건 실행 (try ~ catch ~ finally 블록에서 finally 블록에 해당) Around Around는 메소드 호출 자체를 가로채 비즈니스 메소드 실행 전후에 처리할 로직을 삽입할 수 ..
-
AOP 용어SPRING 2021. 5. 25. 10:45
개인 공부 후 정리 목적의 글 입니다. AOP 용어 정리 조인포인트(Joinpoint) 클라이언트가 호출하는 모든 비즈니스 메소드 포인트컷(Pointcut) 필터링된 조인포인트로 메소드가 포함된 클래스와 패키지는 물론이고 메소드 시그니처까지 정확하게 지정 가능 포인트컷 표현식 execution( * com.multicampus.biz. . *Impl. *(..). ) execution( * com.multicampus.biz. . *Impl . get*(..) ) * : 리턴 타입 com.multicampus.biz. : 패키지 경로 *Impl : 클래스명 *(..) / get*(..) : 메소드명 매개 변수 어드바이스(Advice) 횡단 관심에 해당하는 공통 기능의 코드를 의미하며, 독립된 클래스의 메..
-
어노테이션SPRING 2021. 5. 24. 10:02
개인 공부 후 정리 목적의 글 입니다. 어노테이션(Annotation)이란? @를 이용한 주석으로 자바 코드에 주석을 달아 특별한 의미를 부여하는 것 1. 컴포넌트 스캔(component-scan) 스프링 설정 파일에 애플리케이션에서 사용할 객체들을 등록하지 않고 자동으로 생성하려면 이라는 엘리먼트를 정의해야 한다. => @Component가 설정된 클래스들을 자동으로 객체 생성한다. 어노테이션 사용시 xmlns:context="http://www.springframework.org/sehema.context"를 작성해야된다. 즉, @Component를 설정시 bean을 등록하지 않아도 자동으로 생성해준다. 엘리먼트의 base-package 속성 : 속성값을 "com.springbook.biz" 형태로 ..
-
의존성 주입SPRING 2021. 5. 21. 15:27
개인 공부 후 정리 목적인 글입니다. 의존성 관리 스프링의 의존성 관리 방법 스프링 프레임 워크의 가장 중요한 특징이자 스프링 IoC(제어의 역행)의 핵심 원리 => 객체의 생성과 의존관계를 컨테이너가 자동으로 관리한다는 점 1. 스프링 IoC(제어의 역행)의 핵심 원리 - Dependency Lookup : 컨테이너가 애플리케이션 운용에 필요한 객체를 생성하고 클라이언트는 컨테이너가 생성한 객체를 검색(Lookup)하여 사용하는 방식 => 실제 개발에서 사용하지 않는다. - Dependency Injection : 객체 사이의 의존관계를 스프링 설정 파일에 등록된 정보를 바탕으로 컨테이너가 자동으로 처리 => 스프링 설정 파일 수정만으로 변경사항을 적용할 수 있어서 유지보수가 향상된다. 세터 인젝션(S..
-
스프링 컨테이너SPRING 2021. 5. 21. 11:38
개인 공부 후 정리 목적인 글입니다. 스프링 컨테이너 1. BeanFactory - 스프링 설정 파일에 등록된 객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만 제공 - 컨테이너가 구동될 때 객체를 생성하는 것이 아니라, 클라이언트의 요청(Lookup)에 의해서만 객체가 생성되는 지연 로딩(Lazy Loading) 방식을 사용한다. 결론적으로는 일반적인 스프링 프로젝트에서 BeanFactory를 사용할 일이 전혀 없다. 2. ApplicationContext - BeanFactory가 제공하는 객체 관리 기능 외에도 트랜잭션 관리나 메시지 기반의 다국어 처리 등 다양한 기능을 지원한다. - 컨테이너가 구동되는 시점에 등록된 클래스들을 객체 생성하는 즉시 로딩(pre-loading) 방식으로 동작한다..
-
프레임워크SPRING 2021. 5. 20. 13:00
개인 공부 후 정리 목적인 글입니다. 프레임워크란? - 사전적 의미 : 뼈대 혹은 틀, 체제 - 소프트웨어 관점 : 아키텍처에 해당하는 골격 코드 여기서 아키텍처란? 소프트웨어의 관점에서 본 하드웨어의 논리 규격을 나타낸다. 기능적 물리적 구조를 표현한다. - 애플리케이션을 개발할 때, 가장 중요한 것이 전체 애플리케이션의 구조를 결정하는 아키텍처인데 이 아키텍처에 해당하는 골격 코드를 프레임워크가 제공한다 - Solution이 완제품이라면 Framework는 반제품에 해당한다. - 특정 형태의 소프트웨어 문제를 해결하기 위해 상호협력하는 클래스 프레임과 인터페이스 프레임의 집합 - 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되며 컴포넌트들은 재사용이 가능하다. - 스켈레톤 코드라고도 ..