leehyeon-dv 님의 블로그

스프링 부트 시작하기 본문

spring/spring 이론

스프링 부트 시작하기

leehyeon-dv 2024. 12. 20. 03:21
엔터프라이즈 애플리케이션이란?

 

대규모의 복잡한 데이터를 관리하는 애플리케이션 

이게 복잡해져서 스프링 프레임워크가 등장!

 

 

스프링 프레임워크

서버 성능, 안정성, 보안을 매우 높은 수준으로 제공하는 도구

 

스프링의 설정이 복잡하다는 단점 → 스프링 부트 출시 

 

 

📌 스프링 부트와 스프링의 차이 

  • 구성
    • 스프링 = 애플리케이션 개발에 필요한 환경을 수동으로 구성하고 정의
    • 스프링부트 = 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드해 수동으로 개발환경을 구성할 필요없음
  • 내장 WAS의 유무 
    • 스프링 = 톰갯과 같은 WAS에서 배포
    • 스프링 부트 = WAS를 자체 보유 (jar 파일만 만들면 WAS를 설정하지 않아도 애플리케이션 실행가능)

 

📌IOC(제어의 역전)

다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것

 

예)

//클래스 A에서 클래스 B 생성
public class A {
    b = new B();
}

//제어의 역전 적용
public class A {
    private B b;
}

코드에서 객체를 생성하지 않고 어디선가 받아온 객체를 b에 할당

 

 

📌DI(의존성 주입)

어떤 클래스가 다른 클래스에 의존한다는 뜻

 

예)

public class A {
    @Autowired
    B b
}

 

Ioc/DI를 기초로 하는 스프링 코드이다 

여기에서 사용하는 @Autowired라는 애너테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 한다

(빈 = 스프링 컨테이너에서 관리하는 객체)

기존은 A에서 B 객체를 쓰고 싶은 경우 직접 생성했지만 스프링의 경우는 스프링 컨테이너에서 객체를 주입받아 사용

 

 

📌스프링 컨테이너와 빈

  • 스프링 컨테이너 = 빈이 생성괴고 소멸되기까지의 생명주기를 이 스프링 컨테이너가 관리
  • 빈 = 스프링 컨테이너가 생성하고 관리하는 객체 (예: 앞에서 본 B)
  • 스프링에서 빈을 스프링 컨테이너에  등록 하는 방법 
    • XML 파일설정
    • 애너테이션 추가
@Component  //클래스 Exfile을 빈으로 등록
public class Exfile { }

 

 

📌AOP (관점 지향 프로그래밍)

핵심관점, 부가 관점으로 나눠서 관심 기준으로 모듈화하는 것

 

예) 고객관리하는 프로그램

  • 핵심관점 = 고객관리
  • 부가관점 = 로깅, 데이터베이스 연결

이를통해 프로그래머는 핵심관점 코드에만 집중할 수 있게 되어 프로그램의 변경과 확장에도 유연하게 대응할 수 있음

 

📌PSA (이식 가능한 서비스 추상화)

스프링에서 제공하는 다양한 기술들을 추상화해 개발자가 쉽게 사용하는 인터페이스 

어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것 

  • 클라이언트의 매핑과 클래스 
  • 메서드의 매핑을 위한 애너테이션