56일: 스프링 프레임워크, 의존성 주입 및 제어의 역전, 로깅

Jiwontwopunch·2022년 2월 4일
0

국비기록

목록 보기
56/121
post-thumbnail

2022.02.03.Thur.

✍ 복습

스프링 프레임워크

특징

POPJ(Plain Old Java Object) 기반의 경량 프레임워크, 단순한 자바 클래스. 예를 들어 서블릿 기술은 특정한 형식(부모클래스도 정해져있고 메소드도 정해져있다)의 클래스를 요구한다. 스프링은 POPJ기반이므로 클래스를 작성할 때 부담이 적다. 기본 생성자가 있어야 한다 정도가 스프링의 규칙

  • 의존 주입(Dependency injection, DI) : 다른 객체를 사용
  • 제어 역전(Inversion of Control, IoC) : 수동적으로 짜라
  • 관점지향 프로그래밍(Aspect Oriented Programming, AOP) : 반복되는 코드를 분리(스프링도 사용하는 개념)

의존성 주입 및 제어의 역전

스프링에서 중요하게 사용하는 개념인 DI, 의존주입은 스프링뿐 아니라, 자바 객체 프로그래밍에서 매우 중요하게 생각하는 개념이다. 객체지향 프로그래밍에서 다른 객체를 사용하는 것을 다르게 표현하면 '다른 객체에 의존한다'라고 할 수 있다. 다른 객체를 사용하기 위해서는 사용하려는 A객체가 B,C객체를 직접 생성하여 사용할 수도 있고, 미리 만들어져 있는 것을 할당받아서 사용할 수도 있다. 예로 B,C객체를 생성하고 B,C객체의 라이프 사이클을 관리하고 A객체에 의존 주입을 관리해주는 무엇인가를 컨테이너라고 부른다. 개발자가 직접 객체를 제어하지 않고 컨테이너로 객체의 제어권이 넘어갔다는 의미로 제어의 역전IoC이라는 용어가 사용된다. 스프링이 이 IoC 컨테이너의 역할을 한다. 스프링은 객체를 생성, 라이프사이클 관리 및 필요로 하는 객체에 의존 주입을 하는 컨테이너이고, 라이브러리들의 집합체라고 할 수 있다. 즉, DI 컨테이너(ApplicationContext)

DI 컨테이너(ApplicationContext)

스프링 DI 컨테이너가 관리하는 객체를 스프링 빈bean이라고 한다. 모든 객체가 DI 대상은 아니다. 예를 들어 값을 저장하는 객체 VO는 스프링이 관리하지 않는다.

관점지향 프로그래밍 Aspect Oriented Programming, AOP)

  • 프로그래머가 만들어야 할 핵심 기능(주요 관심사) - 관심concern
  • 로그인과 같이 여기저기서 필요한 부가기능 - 횡단 관심
  • 횡단 관심을 메소드로 분리한 다음 필요할 때 가져다 사용

로깅

콘솔창이나 파일로 프로그램에 대한 정보를 기록

  • 레벨이라는 개념을 도입 : trace() < debug() < info() < warn < error()
  • 설정 파일에서 출력 레벨을 조정 : 개발 중에는 출력 레벨을 info로 했다가 서비스할 때 warn으로 바꿔버린다.
  • 대표적인 라이브러리로는 log4j, logback 등이 있다.
  • 로깅 퍼사드 : slf4j, 로깅 구현체 : logback

0개의 댓글