ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 이해하기
    Spring/spring framework 기본 및 이론 2020. 5. 7. 11:48

    1. 스프링의 이해

    1.1) 스프링 정의

    • 간단히 스프링이라 지칭하지만 정확하게는 스프링 프레임워크 (Spring Framework) 라고 하는 것이 정확한 표현.'
    • 자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 애플리케이션 프레임워크(Framework)

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

    • 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구

    • 자바로 된 프레임워크로 자바SE로 된 자바 객체(POJO)를 자바EE에 의존적이지 않게 연결해주는 역할.

    2. 스프링 장점

    1. 경량 Container

    • Java 객체를 담고 있으며, 생성 ~ 소멸과 같은 라이프 사이클을 관리하며 Spring Container로 부터 필요한 객체를 가져와 사용한다.

    • EJB에 비해 가볍기 때문에 엔터프라이즈급의 시스템을 더 빠른 시간에 작성 가능.

    2. DI (Dependency Injection) 지원

    객체와 객체간의 의존을 의미,

    A라는 클래스에서 B라는 클래스의 메소드를 불러와 실행하게 될 때 그것을 의존한다 생각하면 된다.

    그런데 B클래스의 메소드 이름이 바뀌어 버리면 어떻게 될까? A에서는 그 메소드를 찾을 수 없기 때문에, 똑같이 변경해야 한다.

    1 ~ 2개의 클래스로 구성된 의존 메소드가 바뀌면 직접 변경해 줄텐데, 그 이상을 사용했다면 변경하기 정말 힘들것이다.

    • Spring Framework에서 DI (Dependency Injection) 란?

    위에서 언급 했듯이 기본 방식으로 메소드를 다른 클래스에서 같이 사용하면, 직접적으로 연결되어 있어 유지보수의 어려움을 갖는다.

    그래서 Spring Framework 에서 제공하는 DI를 이용하게 되는것인데,

    DI의 역활은 기본 방식의 의존성을 제거하고, 별도로 3자가 만들어주는 의존객체를 각 클래스에 뿌려주는 기능으로 변경의 유연성을 제공한다.

    보통 1) 생성자를 이용한 주입

    1) 생성자를 이용한 주입

    2) set 메소드를 활용한 주입

    3. AOP(Aspect Oriented Programming, 관점지향 프로그래밍) 지원

    한 어플리케이션 내의 다양한 모듈에서 공통적으로 이용되는 기능을 분리시켜 사용하는 것.

    모듈의 핵심 기능 외의 기능을 해당 모듈에 응집되지 않도록 하기 위한 기술

    Java는 하나의 클래스에 대한 수직적인 흐름만 제어 할 수 있는 반면,

    Spring을 쓰면 특정 클래스들에 대한 수평적인 제어가 가능해진다.

    공통된 부분등, 특정 부분들(핵심 관심사) 로 나누어 관리함으로써,프로그램을 모듈화 하는 방식.

    4. POJO (Plain Old Java Object) 지원

    Java의 객체지향적인 특징을 살려 비즈니스 로직에 출싱한 개발이 가능하도록 하는 것

    • POJO(Plain Old Java Object)를 사용하는 이유?

    코드의 간결함 (비즈니스 로직과 특정 환경 / low레벨의 중속적인 코드를 분리하므로 단순함)

    자동화 테스트에 유리 (환경 종속적인 코드는 자동화 테스트가 어렵지만, POJO는 테스트가 간단함)

    객체지향적 설계의 자유로운 사용

    5.트랜잭션의 지원

    ※ 트랜잭션이란 : 데이터 베이스에서 한꺼번에 수행되어야 될 연산.

    스프링은 이를 어노테이션이나 xml로 설정 가능.

    반응형

    'Spring > spring framework 기본 및 이론' 카테고리의 다른 글

    localeResolver 란  (0) 2020.05.10
    spring webjars란  (0) 2020.05.08
    servelt context 사용  (0) 2020.05.08
    스프링 jdbc 이해하기  (0) 2020.05.07
    스프링_IOC개념  (0) 2020.05.07

    댓글

Designed by Tistory.