Nomad

1.1 소개

개발자는 전통적인 자바 엔터프라이즈 개발에서 유지 보수와 테스트가 쉽도록 구조가 제대로 된 애플리케이션을 만들 책임이 있다. 비지니스와는 무관한 이런 요구 사항(비기능 요구사항)을 만족시키기 위해 개발자는 다양한 디자인 패턴을 사용하지만 다양한 디자인 패턴을 사용해도 생산성이 낮아질 뿐 아니라 개발한 애플리케이션의 품질까지 낮아지곤 한다.

스프링 프레임워크는 자바 엔터프라이즈 애플리케이션 개발을 단순하게 해주는 오픈 소스 애플리케이션 프레임워크다. 스프링을 사용하면 독립 실행 자바 애플리케이션, 웹 애플리케이션, applet, 다양한 유형의 자바 애플리케이션을 개발할 수 있다.

스프링의 중심에는 IoC(Inversion of Control, 제어의 역전) 컨테이너가 있다. IoC 컨테이너는 DI(Dependency Injection, 의존성(의존관계) 주입) 기능을 제공한다. 

1.2 스프링 프레임워크 모듈

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

스프링 모듈간의 상호 의존 관계

 

 

1.3 스프링 IoC 컨테이너

 

1.4 스프링의 장점

 

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

 

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
package sample.spring.chapter01.bankapp;
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
public class FixedDepositController {
    private static Logger logger = LogManager.getLogger(FixedDepositController.class);
 
    private FixedDepositService fixedDepositService;
 
    public FixedDepositController() {
        logger.info("initializing");
    }
 
    public void setFixedDepositService(FixedDepositService fixedDepositService) {
        logger.info("Setting fixedDepositService property");
        this.fixedDepositService = fixedDepositService;
    }
 
    public boolean submit() {
        return fixedDepositService
                .createFixedDeposit(new FixedDepositDetails(110000365"someemail@something.com"));
    }
 
    public FixedDepositDetails get() {
        return fixedDepositService.getFixedDepositDetails(1L);
    }
}
cs

 

 

 

1.6 스프링 5의 새로운 내용

 

 

 

 

1.7 스프링에 기반한 프레임워크들

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading