Skip to content

syeongk/spring

Repository files navigation

Overview

Spring에 관한 기초적인 내용 정리

  1. 스프링 컨텍스트와 빈 주입
  2. 빈 의존성 주입
  3. 추상화 : 구현 분리
  4. 빈 스코프

1 - 스프링 컨텍스트에 빈 추가하기

객체가 의존성이 있거나 그 자체로 의존성인 경우 스프링 컨텍스트에 추가해야 한다.

@Bean

빈 : 스프링에서 관리하는 인스턴스
스프링 컨텍스트 생성 시 @Bean 메서드 호출, 반환 값을 컨텍스트에 추가

@Component

stereotype annotation : 스프링이 인스턴스를 생성하고 컨텍스트에 추가하는 데 필요한 클래스에 사용

2 - 의존성 주입 : 빈 간 관계 구현하기

의존성 : A 빈이 B 빈을 사용한다면 A 빈이 B 빈에 의존성을 갖는 것
순환 의존성 : A 빈이 B 빈을 의존하고 B 빈이 A 빈을 의존하는 경우 빈 생성에 있어 문제가 발생한다.

와이어링 : 구성 파일에서 의존성 주입

오토와이어링 : @Autowired 의존성 주입

동일 타입 빈이 여러 개일 때, @Qualifier로 어떤 빈을 주입할지 알리기

3 - 추상화 : 인터페이스 for 구현 분리

service : 사용 사례 구현하는 객체
repository : 데이터베이스와 직접 작업하는 객체
proxy : 앱 외부와 통신을 담당하는 객체
model : 앱이 사용하는 데이터를 모델링하는 객체 (POJO : 의존성이 없는 단순 객체)

인터페이스

스테레오타입 애너테이션을 사용하지 않는 경우

  • interface, abstract class : 인스턴스화 할 수 없기 때문.
  • model : 의존성이 없고 그 자체로 의존성이 아니기 때문.

인터페이스에 대한 여러 구현체 중 의존성 주입 선택

  • @Primary
  • @Qualifier

4 - 빈 스코프

싱글톤 빈 스코프

고유한 인스턴스 이름에 대해 동일한 인스턴스 참조를 얻는다. 변경 가능한 속성 포함 권장X

빈이 사용되지 않더라도 빈을 생성한다.

빈이 사용될 때 빈을 생성한다.

프로토타입 빈 스코프 : @Scope(BeanDefinition.SCOPE_PROTOTYPE)

빈 이름을 참조할 때마다 새로운 인스턴스가 생성된다. 변경 가능한 속성 포함 가능

About

[spring] 스프링 개념

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages