백엔드

[스프링부트3] 02장_스프링부트3 시작하기 (1)

콩지연 2023. 6. 21. 23:34
1. 스프링과 스프링부트

 

엔터프라이즈 애플리케이션 : 대규모의 복잡한 데이터를 관리하는 애플리케이션

스프링 : 앤터프라이즈 애플리케이션을 위한 개발환경을 제공해 서버 성능, 안전성, 보안을 제공하는 도구

스프링부트 : 스프링의 설정을 보완하는 프레임워크

  스프링 스프링부트
목적 앤터프라이즈 애플리케이션 개발을 쉽게 만들기 스프링의 개발을 더 빠르고 쉽게 하기
설정 파일 개발자가 수동으로 구성 자동 구성
XML 일부 파일은 XML로 직접 생성하고 관리  사용하지 않음
인메모리 데이터 베이스 지원 지원하지 않음 인메모리 데이터 베이스 자동 설정 지원
서버 별도로 수동 설정 (예: 톰캣) 내장형 서버를 제공해 별도의 설정 필요 없음

 

 

2. 스프링 콘셉트 공부하기

 

2-1. 제어의 역전과 의존성 주입

제어의 역전(IOC)

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

스프링은 스프링 컨테이너가 객체를 관리하고 제공하는 역할을 한다.

 

의존성 주입(DI)

제어의 역전을 구현하기 위해 사용하는 방법

어떤 클래스가 다른 클래스에 의존한다는 뜻으로, 스프링 컨테이너에서 관리하는 객체를 주입하는 방식

대표적으로 @Autowired애너테이션은 스프링 컨테이너에 있는 빈을 주입할 수 있게 만든다.

 

빈(Bean)

스프링 컨테이너가 생성하고 관리하는 객체 (스프링의 객체)

@Component 애너테이션을 클래스에 붙이면 빈으로 등록이 된다 

 

스프링 컨테이너

빈이 생성되고 소멸되기까지의 생명주기를 관리하는 공간

@Autowired와 같은 애너테이션을 사용해 빈을 주입받을 수 있게 DI를 지원하기도 한다

 

//클래스 MyClass에서 new 키워드로 새로은클래스 객체 생성
public class MyClass{
	yourClass = new YourClass();
}



@Component	//이 클래스를 빈으로 설정
public class MyClass{
	@Autowired	//객체를 생성하지 않고, 스프링 컨테이너에서 받아온 객체를 yourClass에 할당
	private YourClass yourClass;
}

 

 

2-2. 관점지향프로그래밍(AOP)

프로그래밍에 대한 관심을 핵심 관점, 부가 관점으로 나누어서 관심 기준으로 모듈화하는 것을 의미

예금인출, 예금 송금 모두 logging 등의 기능이 필요 > 공통 관심사항에 해당하는 로직을 모듈화해 핵심 관심사항과 분리

> 핵심 관점 코드에만 집중 가능, 프로그램 변경과 확장에도 유연하게 대응 가능 

 

2-3. 이식 가능한 서비스 추상화(PSA)

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

 

예를들어 클라이언트의 매핑과 클래스, 메서드의 매핑을 위한 애너테이션

스프링에서 데이터베이스에 접근하기 위한 기술로 jpa, mybatis 등이 있는데 어떤 기술을 사용하든 일관된 방식으로 데이터베이스에 접근하도록 인터페이스를 지원한다.

또한 was도 톰캣이 아닌 다른 곳에서 실행해도 기존 코드를 그대로 사용 가능하다.

 

 

 


 

<한 줄로 정리>

IOC  객체의 생성과 관리를 개발자가 아닌 프레임워크가 대신하는 것
DI 외부에서 객체를 주입받아 사용하는 것
AOP 프로그래밍을 할 때 핵심관점과 부가 관점을 나누어서 개발하는 것
PSA 어느 기술을 사용하던 일관된 방식으로 처리하도록 하는 것