티스토리 뷰
반응형
[배워서 바로 쓰는 스프링 프레임워크 - www.yes24.com/Product/Goods/90051375]
1. 소개
- 스프링 프레임워크
- 자바 엔터프라이즈 애플리케이션 개발을 단순하게 해주는 오픈 소스 애플리케이션 프레임워크
2. 스프링 모듈
- 핵심 컨테이너 : 스프링의 기반을 이루는 모듈을 포함
- spring-core, spring-beans : 스프링 DI 기능과 IoC 컨테이너 구현을 제공
- spring-expression : 애플리케이션 객체 설정에 사용하는 SpEL 지원을 제공
- spring-core, spring-beans : 스프링 DI 기능과 IoC 컨테이너 구현을 제공
- 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 : 설정 메타데이터 안에 있는 다른 빈을 가리킨다
- <beans>
- 스프링 컨테이너가 빈을 생성하는 순서는 applicationContext.xml 파일에 빈이 정의된 순서에 따라 결정된다
- 스프링 컨테이너는 세터 메서드를 호출하기 전에 빈이 의존하는 다른 빈들이 완전히 설정되도록 보장한다
반응형
'study > 배워서 바로 쓰는 스프링 프레임워크' 카테고리의 다른 글
Chapter06. 애너테이션 기반 개발 (0) | 2021.07.26 |
---|---|
Chapter05. 빈과 빈 정의 커스텀화하기 (0) | 2021.07.12 |
Chapter04. 의존 관계 주입 (0) | 2021.07.11 |
Chapter03. 빈 설정 (0) | 2021.05.24 |
Chapter02. 스프링 프레임워크 기초 (0) | 2021.05.10 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바스크립트
- 쿠버네티스
- Kubernetes
- JavaScript
- QuickTimePlayer
- 도메인주도설계
- gasmask
- gradle
- 스프링부트
- Spring
- ImagePullBackOff
- cacheable
- kotlin In Action
- 코틀린
- docker
- clean code
- back merge
- 스프링
- ddd
- k8s
- docker for mac
- linuxkit
- 도커
- 자바
- IntelliJ
- kotlin
- 클린코드
- docker pull limit
- java
- springboot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함