2022/02/28 스프링을 조금 더 들여다 보기

김석진·2022년 2월 28일
0

스프링입문

목록 보기
4/5

스프링의 핵심

Spring

  • Spring은 지난 20년 가까이 세월동안 단한번도 자바 엔터프라이즈 어플리케이션 개발의 최고의 자리를 놓치지 않았다.
  • 스프링 프레임워크의 구성은 20여가지로 구성, 이러한 모듈은 스프링의 핵심기능(DI,AOP,..)을 제공해 주며, 필요한 모듈만 선택하여 사용 가능
    -여러가지 모듈이 있지만 그 중에서 단연 스프링 부트, 스프링 클라우드 , 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둔다.
  • Spring의 과제 "테스트의 용이성","느슨한 결합"에 중점을 두고 개발
  • 2000년대 초의 자바 EE 애플리케이션은 작성/테스트가 매우 어려웠으며, 한번 테스트 하기가 번거러웟다. 이로인하여 느슨한 결합이 된 애플리케이션 개발이 힘든 상태였으며, 특히 데이터베이스와 같이 외부에 의존성을 두는 경우 단위테스트가 불가능했다.
  • IoC의 등장 스프링이 다른 프레임워크와 가장 차이점이 IoC를 통한 개발 진행
  • AOP를 사용하여,로깅, 트랜잭션 관리, 시큐리티에서의 적용등 AspectJ와 같이 완벽하게 구현된 AOP와 통합하여 사용 가능하다.

IoC,DI

IoC(Inversion of Control)

스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡긴다.
즉, 개발자에서 -> 프레임워크로 제어의 객체 관리의 권한이 넘어갔으므로 "제어의 역전" 이라고 함

DI(Dependency Injection)

  • DI 장점
    • 의존성으로 부터 격리시켜 코드 테스트에 용이
    • DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여 , 안정적으로 테스트 가능하다
    • 코드를 확장하거나 변경 할 때 영향을 최소화 한다(추상화)
    • 순환참조를 막을 수 있다.

AOP

AOP(Aspect Oriented Programming)

관점지향 프로그램
스프링 어플리케이션은 대부분 특별한 경우를 제외 하고는 MVC 웹 애플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의

  • Web Layer : REST API를 제공하며,Client중심의 로직 적용
  • Business Layer: 내부 정책에 따른 logic을 개발하며, 주로 해당 부분을 개발
  • Data Layer: 데이터 베이스 및 외부와의 연동을 처리

주요 Annotation

  • @Aspect : 자바에서 널리 사용하는 AOP 프레임워크에 포함되며, AOP를 정의하는 Class에 할당
  • @Pointcut : 기능을 어디에 적용시킬지 메소드? Annotation? 등 AOP를 적용 시킬 지점을 설정
  • @Before :메소드 실행하기 이전
  • @After : 메소드가 성공적으로 실행 후, 예외가 발생 되더라도 실행
  • @AfterReturing: 메소드 호출 성공 실행 시 (Not Throws)
  • @AfterThrowing : 메소드 호출 실패 예외 발생(Throws)
  • @Around : Before/after 모두 제어

@Bean과 @Component 차이

@Bean은 클래스에 붙일 수없다. @Component를 통해서 클래스단위로 빈으로 등록 시킬수 있다.

여러가지 Annotation


profile
주니어 개발자 되고싶어요

0개의 댓글