자바 빈? 스프링 빈?

고등어찌짐·2023년 11월 13일
0

Spring Core

목록 보기
2/4

자바 빈

Java Bean은 특정 형태의 클래스이다.
DTO나 VO의 형태가 Java Bean이라고 말할 수 있다. 전달 인자가 없는(No-argument) 생성자를 가지는 형태의 클래스이다. 모든 필드는 private로 getter와 setter를 통해서만 접근 가능하다.

스프링 빈

Spring에서의 Bean은 일반 Java 객체와 다른 점은 없고,
Spring IoC컨테이너가 관리하는 Java 객체를 뜻한다. 스프링 IoC가 관리하는 객체라함은 스프링에 의해 생성되고, 라이프 사이클을 수행하고, 의존성 주입이 일어나는 객체들을 말한다. 즉, 개발자가 관리하는 객체가 아닌 스프링에게 제어권을 넘긴 객체를 스프링에서 Bean이라고 부른다.


정리하다가 헷갈려서 덧붙임

스프링에서 @Service, @Component, @Repository, @Controller 등의 어노테이션을 사용하여 클래스에 특정 역할을 부여하고, 이를 스프링 빈으로 등록할 수 있다.

@Service
public class MyService {
    // 클래스 내용
}

이때 등록된 것은 클래스 자체가 아니라 해당 클래스의 인스턴스, 즉 객체다.


클래스 자체가 아니라 클래스의 인스턴스가 빈으로 등록되는 것이 중요한 포인트!

@Configuration
public class AppConfig {

    @Bean
    public MemberRepository memberRepository() {
        // MemberRepository의 구현체를 반환하는 코드
        return new MemberRepositoryImpl();
    }

    @Bean
    public MemberService memberService() {
        // MemberService의 구현체를 반환하며, memberRepository() 메서드를 통해 의존성 주입
        return new MemberServiceImpl(memberRepository());
    }
}

위처럼 메소드면 메소드의 반환값... 스프링은 이 객체를 스프링 IoC 컨테이너에 등록하여 필요한 곳에서 주입(Dependency Injection)하거나 사용할 수 있게 된다.

profile
TIL 채우는 중

0개의 댓글