본문 바로가기
대외활동/DRACONIST-백엔드

02. Autowired DRACONIST

by 피스타0204 2025. 2. 20.

spring 이나 springboot 코드를 보게 되면 Autowired라는 부분이 종종 보입니다. 

구글에 검색해보면 의존성 주입을 한다는 말이 나오는데 이 말만으로는 이해가 쉽게 가지 않습니다.

 

스프링을 잘 이해하려면 IoC(Inversion of Control; 제어의 역전)과 DI(Dependency Injection;의존성 주입)라는 개념을 알아야 합니다.

처음 자바를 배울 때 어떤 객체를 사용하려면 new 키워드를 사용해 객체를 생성한다고 배웁니다.

public class A {
	b = new B();
}

 

하지만 spring에서는 객체를 직접 생성하거나 제어하지 않고 외부에서 관리하는 객체를 가져와서 사용합니다. 이것을 IoC(제어의 역전)이라고 하고 여기서 객체는 스프링 컨테이너가 자동으로 관리해줍니다.

이렇게 스프링 컨테이너가 생성하고 관리하는 객체를 빈(Bean)이라고 합니다. 이 빈의 생성 소멸의 생명주기를 개발자가 신경쓰지 않고 스프링 컨테이너가 알아서 관리해줍니다.

 

빈(Bean) 추가설명

더보기
더보기
더보기

스프링 빈을 사용하면 개발자가 객체를 직접 관리하지 않아도 되고, 유지보수와 확장성이 훨씬 좋아지기 때문에 사용합니다.

Bean으로 클래스를 등록하기 위한 애너테이션은 @Component이고, 이것을 확장한 것이 Service, Repository같이 우리가 MVC 모델을 관리할 때 사용한 애너테이션입니다.


@Component 일반적인 빈 등록
@Service 서비스 계층 빈 등록
@Repository 데이터 액세스 계층 빈 등록
@Controller 웹 컨트롤러 빈 등록

 

 

아래 코드를 보면 위 코드와 달리 어디선가 가져온 객체를 사용하고 있다는 것을 알 수 있습니다.

public class A {
	@Autowired
	private B b;
}

 

 

스프링에서는 DI( 의존성 주입)을 통해 이것을 구현합니다.

@Autowired 어노테이션을 붙이면, A클래스 안에 B 타입의 객체 b가 생성됩니다.