본문 바로가기

프레임워크/스프링

토비의 스프링 용어 정리

요즘 공부 하고있는 책인데 내용이 제 수준에서는 어려웠습니다.


 읽다가 집중력 깨지는 순간이 많아서 왜그런가 생각해보니 아무래도 모르는 단어나 알고는 있지만 내 머릿속에서 명확하게 정의가 되지 않은 용어들이 많기 때문이란 생각이 들었습니다. 아무래도 용어관련 부분에서 한번 정리를 하고 넘어가야 할 것 같아서, 제 기준으로 몰랐던 용어나 익숙하지 않은 용어를 정리해서 올립니다.


 1부(1~8장)의 용어들을 정리하였고, 최대한 책의 나오는 개념 설명으로 용어를 정리하였습니다.

단, 7~8장의 경우 그런 단어가 없었기 때문에 따로 정리하지 않았으니 참고 하시길 바랍니다.


     



1장



- 프레임워크  

 API라는 점에서 라이브러리와 비슷하지만, 라이브러리가 코드에 의해 필요에 따라 사용하는 거라면 프레임워크는 개발 자체를 주도하는 방식을 정해주는 API이다.


- 자바빈 

 원래는 비주얼 툴에서 조작 가능한 컴포넌트를 말한다. 비주얼 컴포넌트로서 자바빈이 인기를 잃으면서 이제는 두 가지 관례(디폴트 생선자, 프로퍼티)를 따라 만들어진 오브젝트를 가리킴.


- 컴포넌트 

 각각 독립된 모듈을 의미한다. 소프트웨어에서 단위 정도로 생각하는게 편할 것 같다.


- 관심사의 분리(Separation of Concerns) 

 관심이 같은 것은 모으고 관심이 다른 것은 가능한 따로 떨어트려 서로 영향을 주지 않게 하는 것.


- 템플릿 메소드 패턴 

 슈퍼 클래스에 기본적인 로직의 흐름을 만들고, 그 기능의 일부를 추상 메소드나 오버라이딩이 가능한 메소드로 만든 뒤 서브 클래스에서 이런 메소드에 구현해서 사용하는 방법(상속을 통한 확장을 의미하는 듯. 인터페이스 포함여부는 잘 모르겠음)


- 팩토리 메소드 패턴   

 서브 클래스에서 구체적인 오브젝트 생성 방법을 결정하게 하는 것.(서브 클래스에서 메소드를 생성하는 것과 의존성 주입, 다형성이 엮어진 개념 같음.)


- 클라이언트  

 이 책 안에서 개념은 실질적으로 테스트할 클래스를 호출하는 클래스 정도의 느낌.


- 개방 폐쇄 원칙(OPC, Open-Closed Principle) 

 클래스나 모듈은 확장에는 열려있어야 하고, 변경에는 닫혀 있어야 한다는 객체지향 설계 원칙.


- 전략 패턴(Strategy Pattern)

 자신의 기능 맥락에서, 필요에 따라 변경이 필요한 알고리즘을 인터페이스 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴.


- 애플리케이션 컨텍스트 

 IoC 방식을 따라 만들어진 일종의 빈 팩토리. 빈팩토리와 거의 같은 용어라 보면 되지만 IoC의 기본 기능에 초점을 맞춘것이 빈팩토리,  전반적인 요소의 제어 작업을 담당하는 IoC 엔진이라는 의미가 부각되는 것이 애플리케이션 컨택스트.


- 빈 

 스프링이 Ioc 방식으로 관리하는 오브젝트. 관리되는 오브젝트라고도 한다.


- 싱글톤 레지스트리

 스프링은 직접 싱글톤 형태의 오브젝트를 만들고 관리하는 기능을 제공한다. 이를 싱글톤 레지스트리라고 한다.




2장



- 엔터프라이즈 어플리케이션

 기업 규모로 만들어진 어플리케이션. 특정한 분야의 개발을 의미하는 것이 아닌 개발의 규모를 의미.


- 픽스처 

 테스트를 수행하는 데 필요한 정보나 오브젝트.


- 침투적 기술 

 기술을 적용했을 때 어플리케이션 코드에 기술 관련 API가 등장하거나. 특정 인터페이스나 클래스를 사용하도록 강제하는 기술.


- 비침투적 기술 

 침투적 기술과는 반대로 애플리케이션 로직에 영향을 주지않고 적용 가능. 기술에 종속적이지 않게 해준다. 스프링은 비침투적 기술의 대표적인 예


- 동등분할 

 같은 결과를 내는 값의 범위를 구분해서 각 대표 값으로 테스트를 하는 방법.


- 경계값 분석 

 에러는 동등분할 범위의 경계에서 주로 많이 발생한다는 특징을 이용해서 경계의 근처에 있는 값을 이용해 테스트 하는 방법. 동등 분할 내에 대표값을 산출하는 기준일 듯 하다.




3장



- 컨텍스트 

 전체 적인 진행방향이 담겨있는 자바 파일을 의미하는 듯. 내부의 로직은 여기서 빠져 있고, 컨텍스트에 DI를 해줌으로써 코드의 전체적인 기능을 정하는 느낌.


- 중첩 클래스 : 다른 클래스 내부에 정의되는 클래스

1) 스태틱 클래스 : 독립적으로 오브젝트로 만들어질 수 있는 클래스.

2) 내부 클래스 : 자신이 정의된 클래스 오브젝트 안에서만 만들어질 수 있는 클래스.

2-1) 멤버 내부 클래스 : 멤버 필드 처럼 오브젝트 레벨에 정의되는 클래스

2-2) 로컬 클래스 : 메소드 레벨에서 정의되는 클래스

2-3) 익명 내부 클래스 : 이름을 갖지 않는 내부 클래스


- 템플릿 

 어떤 목적을 위해 만둘어둔 모양이 있는 틀을 의미. 프로그래밍에서는 고정된 틀 안에 바꿀 수 있는 부분을 넣어서 사용하는 경우를 의미함. 고정된 틀을 보통 슈퍼클래스에 두고, 변화는 부분(콜백)을 서브 클래스에 둔다. => 외부의 오브젝트


- 콜백 

 실행되는 것을 목적으로 다른 오브젝트의 메소드에 전달되는 오브젝트를 말한다. => 내부의 오브젝트


- 템플릿/콜백 패턴 

 변하는 부분과 변하지 않는 부분으로 구성하여 다형성 개념을 사용하는 패턴. 템플릿 내부에서 콜백을 호출하고, 콜백은 작업 결과를 다시 템플릿에 전달하는 구조.




4장


 

- 예외 전환 

 예외를 복구해서 정상적인 상태로는 만들 수 없기 때문에 예외를 메소드 밖으로 던지는 것.




5장



- 글로벌 트랜잭션 

 각 DB와 독립적으로 만들어지는 Connection을 통해서가 아니라, 별도의 트랜잭션 관리자를 통해 트랜잭션을 관리하는 방식


- 단일 책임 원칙 

 하나의 모듈은 한가지 책임을 가져야 한다.


- SMTP 

 프로토콜의 종류. 메일 전송 서버용으로 주로 쓰인다.




6장



- 단위 테스트  

 의존 오브젝트나 외부의 리소스를 사용하지 않고 고립시켜서 하는 테스트.


- 통합 테스트 

 두개 이상의 단위가 결합해서 진행하는 테스트이고, 외부의 DB나 파일, 서비스 등의 리소스가 참여하는 테스트 이다.


- 프록시 

 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 것을 대리자, 대리인 같은 역학을 한다고 해서 프록시라고 부름.


- 타깃, 실체 

 프록시를 통해 최종적으로 요청을 위임 받아 처리하는 실제 오브젝트 


- 데코레이터 패턴  

 타깃에 부가적인 기능을 런타임 시 다이나믹 하게 부여해주기 위해 프록시를 사용하는 패턴.


- 프록시 패턴(프록시라는 용어와 구분해야한다) 

 프록시를 사용하는 방법 중에서 타깃에 대한 접근 방법을 제어하려는 목적을 가진 경우, 여기서 프록시는 타깃의 기능을 확장하거나 추가하지 않는다. 대신 클라이언트 타깃에 접근하는 방식을 변경해준다. 


- 리플렉션 

 자바의 코드 자체를 추상화 해서 접근하도록 만든 것. 기존 클래스를 따라 하는 것 같다.


- 추상 레이어 

 특정한 집합의 기능의 자세한 부분을 숨기는 한 방법이다.


- 투명한 부가기능 

 부가기능을 적용한 후에도 기존 설계와 코드에는 영향을 주지않는 것.


- 어드바이스 

 타깃이 필요 없는 순수한 부가기능. 타깃 오브젝트에 적용하는 부가기능을 담은 오브젝트를 의미한다. 부가기능을 제공하는 오브젝트.


- 포인트 컷 

 부가기능 적용 대상 메소드 선정 방법. 메소드 선정 알고리즘을 담은 오브젝트를 의미한다.


- 어드바이저 

 포인트 컷(메소드 선정 알고리즘) + 어드바이스(부가기능)


- AOP(애스펙트 지향 프로그래밍) 

 액스펙트는 그자체로 애플리케이션의 핵심기능을 담고 있지는 않지만, 애플리 케이션을 구성하는 한 가지 요소이고, 핵심 기능에 부가되어 의미를 갖는 특별한 모듈을 가리킨다.

애스펙트는 단어의 의미대로 애플리케이션을 구성하는 한가지 측면이라고 생각할 수있다. 

핵심적인 기능에서 부가적인 기능을 분리해서 에스팩트라는 독특한 모듈로 만들어서 설계하고 개발하는 방법을 의미한다.