안녕하세요. @deathnote9 입니다.
이번 포스팅은 Spring FrameWork에 대해서 알아보고자 합니다.
저번에 DI 예시에 대해서 설명을 올렸었는데 spring이나 DI, IOC에 대한 설명을 더 추가적으로
올리면 좋을거라는 댓글을 보고 추가적으로 올리게 되었습니다!
Enterprise Application에서 필요로 하는 기능을 제공 하는 FrameWork이다.
경량 Container 이며 Spring Container로부터 필요한 객체를 가져와 사용하는 것.
스프링 특징
- 크기와 부하의 측면에서 경량.
- 제어 역행(IoC)이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모.
- 관점지향(AOP) 프로그래밍을 위한 풍부한 지원을 함.
- 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너(Container)라고 할 수 있음.
- 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음.
경량 컨테이너로서 자바 객체를 직접 관리.
각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.스프링은 POJO(Plain Old Java Object) 방식의 프레임워크.
일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.스프링은 제어 반전(IoC : Inversion of Control)을 지원.
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.스프링은 의존성 주입(DI : Dependency Injection)을 지원
설정 파일이나 Annotation을 통해서 객체간의 의존관계를 설정 할 수 있도록 하고 있다. 따라서 객체를 직접 생성하거나 검색할 필요가 없다.스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원
비즈니스 로직과 공통 모듈로 구분하고, 핵심 로직에 영향을 미치지 않고 공통 모듈을 효과적으로 사이에 끼워넣도록 하는 방법이다.
공통모듈을 만든 후에 코드 밖에서 이 모듈을 비즈니스 로직에 삽입하는 것이 AOP적인 개발이다. 코드 밖에서 설정된다는 것이 핵심이다.스프링은 영속성과 관련된 다양한 서비스를 지원
iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.스프링은 확장성이 높음.
스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.