티스토리 뷰

반응형

[배워서 바로 쓰는 스프링 프레임워크 - www.yes24.com/Product/Goods/90051375]

 

1. 소개

  • 스프링 프레임워크
    • 자바 엔터프라이즈 애플리케이션 개발을 단순하게 해주는 오픈 소스 애플리케이션 프레임워크

2. 스프링 모듈

  • 핵심 컨테이너 : 스프링의 기반을 이루는 모듈을 포함
    • spring-core, spring-beans : 스프링 DI 기능과 IoC 컨테이너 구현을 제공
      • spring-expression : 애플리케이션 객체 설정에 사용하는 SpEL 지원을 제공
  • AOP와 계측 : AOP(Aspect Oriented Programming)과 클래스 계측을 지원하는 모듈 포함
    • spring-aop : AOP 기능 제공
    • spring-instrument : 클래스 계측 지원 제공
  • 메시징
    • spring-messaging : 메시징 기반 애플리케이션을 쉽게 개발하도록 도와줌
  • 데이터 접근/통합 : 데이터베이스나 메시징 공급자와의 상호 작용을 쉽게 해주는 모듈을 포함
    • spring-jdbc : JDBC를 사용한 데이터베이스 사용을 단순화해줌
    • spring-orm : 하이버네이트나 JPA와 같은 ORM(객체-관계 매핑) 프레임워크 통합을 제공
    • spring-jms : JMS 공급자와의 상호 작용을 쉽게 만들어준다
    • spring-tx : 프로그램을 통해 트랜잭션 관리를 선언적으로 할 수 있다
    • spring-webmvc : 서블릿(servlet) 기반의 웹 애플리케이션과 RESTful 웹 서비스 개발을 쉽게 해준다
    • spring-webflux : 반응형 웹 애플리케이션과 RESTful 웹 서비스 개발을 쉽게 해준다
    • spring-websocket : 웹소켓 프로토콜을 사용하는 웹 애플리케이션 개발을 지원
    • spring -web : 모든 웹 모듈이 공통으로 사용하는 클래스와 인터페이스 정의
  • 테스트
    • spring-test : 단위 테스트와 통합 테스트를 도와줌
  • 스프링 모듈 사이의 상호 의존 관계

 

3. 스프링의 IoC 컨테이너

  • 의존관계(dependency) : 객체가 다른 객체와 상호 작용하는 경우
  • DI(Dependency Injection, 의존 관계 주입)
    • 객체 간의 의존 관계를 생성자 인수(constructor argument)나 세터 메서드 인수(setter method arguments)로 명시하고 객체를 생성할 때 생성자나 세터를 통해 의존 관계를 주입하는 방식을 따르는 디자인 패턴
  • 스프링 IoC 컨테이너(IoC: Inversion of Control, 제어의 역전)
    • 스프링 애플리케이션에서 애플리케이션에 존재하는 객체를 생성하고 의존 관계를 주입하는 일을 담당
    • 빈(bean) : 스프링 컨테이너가 생성하고 관리하는 애플리케이션 객체들
    • 의존 관계를 만들고 주입하는 책임은 애플리케이션의 객체가 아닌 스프링 컨테이너에 있음
    • 의존 관계 정보는 설정 메타데이터(configuration metadata)를 사용해서 지정
      • 스프링 IoC 컨테이너는 이 것을 읽어서 자바 리플렉션 API를 이용해 애플리케이션 객체들과 그들의 의존 관계를 인스턴스화한다
      • 설정 메타데이터는 XML, 자바 애너테이션, 자바 코드 등의 방식을 사용할 수 있다
    • 스프링 컨테이너가 애플리케이션 객체에 추가 기능을 부여하고 애플리케이션 객체를 평범함 자바 객체(POJO: Plain Old Java Object)로 모델링할 수 있다
      • POJO 클래스 : 프레임워크가 지정하는 인터페이스나 클래스를 구현 및 확장하지 않는 보통 자바 클래스에 지나지 않는다

4. 스프링의 장점

  • 스프링은 객체 생성과 의존 관계 주입을 처리함으로써 자바 애플리케이션 조합을 쉽게 만들어준다
  • 스프링은 POJO로 애플리케이션을 개발하는 것을 권장한다
  • 지역과 전역 트랜잭션을 일관성 있게 섞어서 사용하기
    • 선언적 트랜잭션 관리(declarative transaction management)
    • 지역 트랜잭션 : JDBC Connection과 가은 자원에 따라 정해지는 트랜잭션
      • 데이터베이스가 하나인 경우에 유효
    • 전역 트랜잭션 : JTA api를 사용하 트랜잭션을 관리
      • 사용하는 트랜잭션 자원이 둘 이상일 때
    • 스프링은 지역과 전역 트랜잭션을 똑같이 취급할 수 있게 추상화 계층을 제공함으로써 발생할 문제를 단순화해준다
  • 선언적 트랜잭션 관리
    • 스프링을 사용하면 트랜잭션을 선언적으로 관리할 수 있다
  • 보안
    • spring security는 자바 애플리케이션을 안전하게 만들기 위해 필요한 사용자 인증(authentication)과 권한 부여(authorization) 기능을 제공한다
  • JMX(Java Management Extension)
  • JMS(Java Message Service)
    • 스프링은 추상화 계층을 제공해서 JMS 제공자와의 상호작용을 간단하게 만들어준다
  • 캐싱
    • 스프링의 캐시 추상화를 사용하면 애플리케이션에서 일관성 있게 캐시를 사용할 수 있다

5. 간단한 스프링 애플리케이션

  • 설정 메타데이터
    • 애플리케이션에 필요한 엔터프라이즈 서비스(트랜잭션 관리, 보안, 원격 접근 등) 정보를 지정한다
    • xml 파일을 사용하는 방법과 POJO 클래스에 애너테이션을 설정하는 방법이 있음
    • 일반적으로 스프링 컨테이너는 도메인 객체를 관리하지 않음
    • 애플리케이션 컨텍스트 XML 파일
      • <beans>
        • XML 파일의 루트 엘리먼트
      • <bean>
        • 스프링 컨테이너가 관리할 애플리케이션 객체를 설정
        • 빈 정의(bean definition)
          • 스프링 컨테이너가 빈 정의에 따라 만들어내는 객체를 빈이라고 부른다
        • 속성
          • id : 빈의 유일한 이름을 지정
          • class : 빈 클래스에 전체 이름(full-qualified class name)을 지정
          • name : 빈에 별명(alias) 지정
        • 스프링 커네이너가 관리, 생성하고 의존 관계를 주입할 책임도 스프링 컨테이너에 있음
        • 사용하려면 직접 생성하지 말고 스프링 컨테이너로부터 빈을 얻어서 사용해야 한다
      • <property>
        • <bean> 엘리먼트가 설정하는 빈의 의존 관계(또는 설정 프로퍼티)를 지정한다
        • 스프링 컨테이너가 의존 관계(또는 설정 프로퍼티)를 설정하기 위해 호출할 자바빈 스타일 세터 메서드와 대응된다)
        • 속성
          • name : 빈의 자바빈 스타일 세터 메서드를 가리킨다, 세터 메서드는 ref 속서이 가리키는 빈의 ㅏ입과 같은 타입의 인수를 받는다
          • ref : 설정 메타데이터 안에 있는 다른 빈을 가리킨다
    • 스프링 컨테이너가 빈을 생성하는 순서는 applicationContext.xml 파일에 빈이 정의된 순서에 따라 결정된다
      • 스프링 컨테이너는 세터 메서드를 호출하기 전에 빈이 의존하는 다른 빈들이 완전히 설정되도록 보장한다
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함