Camp/Spring
[Spring] Sping, Spring Boot의 차이와 Spring의 핵심
뭔가 한다
2024. 10. 7. 20:56
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 접근 방법을 규정한 인터페이스
예를 들어, 데이터베이스가 변경될 경우 스프링을 사용했을 경우 동일한 사용방법을 유지한 상태로 변경 가능