Etc/2020

Spring Framework 정리

메바동 2020. 5. 11. 16:23
728x90
  1. Spring Framework 특징

    • 경량 컨테이너 : 스프링 컨테이너는 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며, 스프링 컨테이너로부터 필요한 객체를 가져와 사용
    • DI(Dependency Injection)를 지원 : 의존성 주입 / 설정 파일이나 어노테이션을 통해서 객체 간의 의존 관계를 설정
    • AOP(Aspect Oriented Programming) 지원 : 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통으로 필요로 하지만 실제 모듈의 핵심은 아닌 기능들을 분리해서 각 모듈에서 사용
    • POJO(Plain Old Java Object) 지원 : 구식 자바 객체 지원 / 특정한 API를 상속하거나 구현하지 않은 일반적인 자바 객체로 개발 -> 프레임워크 또는 클라이언트 간의 이식성을 높일 수 있음, 테스트의 효율이 높아짐
    • 트랜잭션 처리를 위한 일관된 방법 제공 : JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용 가능
    • 데이터베이스 처리를 위한 라이브러리 연동 가능
    • 엔터프라이즈 애플리케이션을 개발하는데 필요한 다양한 API 연동 가능
      영속성과 관련된 다양한 API를 지원
    • IoC(Inversion of Control) : 역전 제어 / 프로그램의 제어권이 애플리케이션에서 외부로 역전된 것
  2. Spring Framework 기능 요소

    • Core 컨테이너 : Spring 프레임워크의 기본 기능을 제공, 이 모듈의 BeanFactory는 Spring의 기본 컨테이너이면서 스프링 DI의 기반
    • Context : Context 모듈은 BeanFactory의 개념을 확장한 것으로 국제화 메시지, 애플리케이션 생명주기 이벤트, 유효성 검증을 지원
    • DAO : DAO 패키니는 JDBC에 대한 추상화 계층으로 JDBC 코딩이나 예외처리하는 부분을 간편화 시켰으며, AOP 모듈을 이용해 트랜잭션 관리 서비스도 제공
    • ORM : Mybatis, Hibernate, JPA 등 널리 사용되는 ORM 프레임워크와의 연결고리 제공
    • AOP : AOP 모듈을 통해 Aspect 지향 프로그래밍을 지원
    • Web : 일반적인 웹 애플리케이션 개발에 필요한 기본기능을 제공
    • WebMVC : MVC(Model, View, Controller) 패러다임은 사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 애플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임
  3. Spring Framework 구조 및 흐름

  4. Spring Framework에서 자주 쓰는 Annotation

    • 의존성 주입 용도
      @Required : 꼭 필요한 속성들을 정의
      @Autowired : 속성, setter method, constructor에서 사용, 무조건적인 객체에 대한 의존성을 주입 / 이 어노테이션을 사용하면 스프링이 자동적으로 값을 할당, Controller 클래스에서 DAO나 Service에 관한 객체들을 주입시킬 때 많이 사용
      @Inject : Autowired 어노테이션과 비슷한 역할
      @Qualifier : Autowired는 Type에 따라 매칭, Autowired 아래 @Qulifier("빈 이름") 형식으로 특정 bean을 매칭

    • 컨트롤러 관련
      @Controller : Spring의 Controller를 의미
      @RestController : View로 응답하지 않는 컨트롤러를 의미
      @RequestMapping : 컨트롤러 혹은 메서드의 URI를 정의하는데 쓰임, 요청 형식인 GET, POST, PATCH, PUT, DELETE를 정의하기도 함, 정의하지 않으면 자동으로 GET으로 설정
      @PathVariable : URI에서 / 다음으로 넘어오는 값들을 파싱 하는 어노테이션
      @RequestBody : POST나 PUT, PATCH로 요청을 받을 때 요청에서 넘어온 body 값들을 자바 타입으로 파싱
      @RequestParam : ?name=text와 같은 쿼리 파라미터를 파싱
      @ResponseBody : HttpMessageConverter를 이용하여 JSON혹은 xml로 요청에 응답할 수 있게 해주는 어노테이션

    • 데이터 접근 관련
      @Service : 서비스 클래스에서 쓰임, 비즈니스 로직을 수행하는 클래스를 나타냄
      @Repository : DAO 클래스에서 쓰임, 데이터베이스에 접근하는 메서드를 가지고 있는 클래스에서 쓰인다고 볼 수 있음

      @ModelAttribute : 자동으로 해당 객체를 뷰까지 전달
      @SessionAttribute : 세션상에서 모델의 정보를 유지하고 싶은 경우 사용

728x90