본문 바로가기
Camp/Spring

[Spring] Sping, Spring Boot의 차이와 Spring의 핵심

by 뭔가 한다 2024. 10. 7.

Spring, Spring Boot 차이

1. 구성 차이

  •  spring boot: 수동으로 개발에 필요한 환경을 구축할 필요가 없음

2. 내장 WAS 유무

  •  spring: WAS를 별도로 수동으로 설정해야 함
  •  spring boot: jar 파일만 만들어주면 별도의 WAS 설정이 불필요
    •  내장 WAS 종류 : 톰캣, 제티, 언더토우

3. XML 사용 유무

  •  spring : 일부 파일을 XML로 생성
  •  spring boot: XML을 사용하지 않는다.

4. 인메모리 DB

  •  spring boot: 자동으로 지원
  •  In-memory DB: 메모리에 데이터를 업로드 하여 사용하는 데이터베이스(기존은 디스크에 데이터 관리)
    •  NoSQL에 속하는 DB로 key-value 형식으로 데이터를 저장
    •  Redis, Memcached 등이 있음

Spring 핵심

IoC (Inversion of Control; 제어의 역전)

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

스프링의 경우 스프링 컨테이너(Spring Container)가 객체를 관리, 제공하는 역할을 한다.

public class A {
	private B b; // 받아온 객체를 b에 할당 -> 내부에서 선언하지 않음
}

DI (Dependency Injection; 의존성 주입)

IoC를 구현하기 위한 방법

다른 클래스에 의존한다.

public class A {
	@Autowired
	B b; // A에서 B를 주입받음
}

Spring Container

Bean을 생성하고 관리(Bean의 생명주기를 관리), DI를 지원한다.

Bean

스프링에서 제공해주고 관리해주는 객체

Spring은 Spring Container에 Bean을 주입하기 위해 XML 파일을 설정, 애너테이션 추가등의 방법을 제공

@Component 
public class MyBean {
	// ...
}

Bean의 이름은 클래스의 이름의 첫글자를 소문자로 바꿔 관리(위의 예제에서는 myBean이 된다.)

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

핵심 관점, 부가 관점으로 관점 기준을 모듈화 함

  • 핵심 관점: 애플리케이션의 핵심 기능과 관련된 사항
  • 부가 관점: 모든 핵심 관심 사항에 공통적으로 적용되는 사항

애플리케이션 전반에 걸쳐 사용되는 공통 기능을 비즈니스 로직으로 부터 분리해 내는 것

→ 핵심 관점 코드에만 집중하고 프로그램 변경과 확장에 유연하게 대응할 수 있음

PSA (Portable Service Abstraction; 이식 가능한 서비스 추상화)

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

어떤 기술을 사용해도 일관된 방식으로 사용 가능하다.

JAVA를 사용하여 DB에 접근하는 방법을 규정한 인터페이스를 제공하고 있어서 가능

  • JDBC(Java DB Connectivity): DB 접근 방법을 규정한 인터페이스

예를 들어, 데이터베이스가 변경될 경우 스프링을 사용했을 경우 동일한 사용방법을 유지한 상태로 변경 가능