카테고리 없음

@Component와 @Bean

Tech_JINI 2025. 5. 13. 18:25

🌱 스프링이 내 코드를 "일하게" 하려면?

스프링 프레임워크는 기본적으로 스프링 컨테이너가 관리하는 객체들만 다룰 수 있다.

-> "스프링 빈으로 등록이 되어야만, 스프링은 그 코드랑 일을 한다."

 

스프링 빈을 등록하는 2가지 방법

1. @Component

ex. @Controller, @Service, @Repository

 

    2. @Configuration + @Bean


@Configuration

원래 설정 파일(.xml)이었는데, 자바로 쓴 것

 

잠깐! .xml 설정 파일은 뭐였을까?

.xml (eXtensible Markup Language)

: 데이터의 의미, 전송을 위해 <태그> </태그> 사이에 있는 글자가 어떤 구성을 나타내는지 표현하기 위해 사용하는 언어 (= 마크업 언어)

- 네트워크로 데이터 전송할 때, 서로 다른 시스템끼리 데이터를 잘 알아보게 하기 위해

- ✨특정 시스템 안에서 데이터의 의미를 나타내는 설정 파일

- ..

 

<->

html : 사용자의 화면에서 <태그> </태그> 사이에 있는 글자가 어떤 구성을 나타내는지 표현하기 위해 사용하는 언어 (= 마크업 언어)

 

@Configuration

- 어노테이션 위치 : 클래스 상단

- 스프링(부트) 프로젝트 안에서 데이터의 의미를 나타낼게 있나?

 

 

[xml 버전]

-> 스프링아 이 클래스는 너가 스프링 빈으로 등록해야 해.

<bean> Prodect 클래스 </bean>

아직 많이들 사용하지만 레거시(=옛날 방식의)

 

[Java 버전]

-> 스프링아 이 클래스는 너가 스프링 빈으로 등록해야 해.

     @Bean 사용

 

@Configuration
public class AppConfig {

    @Bean // 스프링아, 아래 메소드가 반환하는 객체를 스프링 빈으로 등록해줘
    public ProductRepository productRepository() {
        return new ProductRepository();
    }
}

 

 

@Repository vs @Configuration + @Bean

@Repository 에는

- @Component가 들어있는 건 당연

- DB랑 연결할 때 기본적으로 필요할 것 같은 예외 처리 (ex. DB명령어=SQL 문법 틀렸을 때, 제약 조건 틀렸을 때 ... )

cf. @Controller, @Service

 

@Configuration 파일을 스프링이 읽어주는 이유

: 설정 파일이기 전에, 이 파일도 스프링 빈으로 등록되어 있기 때문