1. spring이란


  • JavaEE가 제공하는 기능들을 대신 제공
  • 가벼운 DI 및 AOP 기반 컨테이너이자 프레임워크
  • 특징
    • 자바 객체를 담고있는 컨테이너
      • 컨테이너는 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리
      • 컨테이너로부터 필요한 객체를 가져와 사용
    • DI 지원
      • Dependency Injection
      • 설정파일이나 어노테이션을 통해 객체 간의 의존관계 설정
      • 객체는 의존하고있는 객체를 직접 생성하거나 검색할 필요가 없다
    • AOP 지원
      • Aspect Oriented Programing
      • 스프링 자체적으로 AOP를 지원하고 있다
      • 트랜잭션이나 로깅, 보안등의 기능을 분리하여 각 모듈에 적용 가능
    • POJO 지원
      • Plain Old Java Object
      • 스프링 컨테이너에 저장되는 자바 객체는 특정 인터페이스를 구현하거나 클래스를 상속받지 않아도 된다
      • 기존에 작성한 코드를 수정할 필요없이 스프링에 사용 가능
    • 트랜잭션 처리를 위환 일관된 방법 제공
      • JDBC를 사용하든 JPA를 사용하든 설정파일을 통해 트랜잭션 관련 정보 입력
      • 트랙잭션 구현에 상관없이 동이란 코드를 여러 환경에서 사용 가능
    • 영속성과 관련된 다양한 API 지원
      • JDBC, myBatis, 하이버네이트 등 널리 사용되는 라이브러리 연동 지원
    • 다양한 API 연동 지원
      • JMS, 메일, 스케쥴등 다양한 API를 설정파일과 어노테이션을 통해 지원
    • 자체적으로 MVC 프레임워크 제공
    • 스트럿츠2, JSF와 같은 프레임워크 연동