토비의 스프링 3.1의 내용을 요약한 자료입니다. 개념적인 설명만 요약하였으며 개념의 이해를 돕는 구체적인 코드 및 예제를 살펴보시려면 책을 참조하시기 바랍니다.
포스팅한 내용이 저작권의 문제가 발생할 수 있는 경우 게시물은 삭제/비공개 처리 될 수 있습니다.
자바 언어의 변화 ( 애노테이션의 메타정보 활용 )
- 자바는 소스코드가 컴파일 된후 클래스 파일에 저장됐다가, JVM에 의해 메모리로 로딩되어 실행된다.
- 자바 코드는 실행되는 것이 목적이 아니라 다른 자바 코드에 의해 데이터처럼 취급되기도 한다.
- 자바 코드의 일부를 리플렉션 API등을 이용해 어떻게 만들어 졌는지 살펴보고 그에 따라 동작하는 기능이 점점 많이 사용되고 있다.
- 애노테이션은 애플리케이션 핵심 로직을 담은 자바 코드와 IoC 방식의 프레임워크, 프레임워크가 참조하는 메타정보라는 세 가지로 구성하는 방식에 잘 어울리기 때문에 만힝 사용된다.
- 애노테이션은 XML이나 여타 외부 파일과 달리 자바 코드의 일부로 사용되며, 코드에 직접 영향을 주지는 못하지만 메타 정보로서 활용되는 데는 XML에 비해 유리한 점이 많다.
- 애노테이션은 정의하기에 따라서 타입, 필드, 메소드, 파라미터, 생성자, 로컬 변수의 한 군데 이상 적용이 가능하다.
- 반면에 애노테이션에서 제공하는 정보를 XML로 표현하려면 모든 내용을 명시적으로 나타내야 한다. 즉 XML은 애노테이션보다 작성할 정보의 양이 많다.
- 애노테이션은 자바 코드에 존재하므로 변경할 때마다 새로 컴파일해줘야 한다. 반면에 XML은 어느 환경에서나 손쉽게 편집이 가능하다.
- 자바 개발의 흐름은 XML 같은 텍스트 형태의 메타정보 활용을 자바 코드에 내장된 애노테이션으로 대체하는 쪽으로 가고 있다.
자바 언어의 변화 ( 정책과 관례를 이용한 프로그래밍 )
- 애노테이션과 같은 메타정보 활용은 명시적인 동작내용을 기술하는 코드 대신 미리 약속한 규칙 또는 관례를 따라 프로그램을 동작하도록 만드는 프로그래밍 스타일을 적극적으로 포용하게 만들어왔다.
- 이런 스타일의 프로그래밍 방식은 자바 코드로 모든 작업 과정을 직접 표현했을 때에 비해서 작성해야 할 내용이 줄어든다는 장점이 있다. ex) new 키워드 대신 <bean> 태그 사용
- 단점으로는 메타정보를 통해 프로그램이 어떻게 동작할지 이해해야 하며 정의된 많은 규칙과 관례를 기억해야 한다.
- 스프링은 점차 애노테이션으로 메타정보를 작성하고, 미리 정해진 정책과 관례를 활용해 간결한 코드를 많은 내용에 담을 수 있는 방식을 적극 도입하고 있다.