Spring Beans

2024. 1. 15. 11:09
728x90

보통 IoC Container가 싱글턴 패턴으로 빈 관리

 

- Bean 객체로 등록하기 위한 annotation

 

1) @Component

: 가장 기초가 되는 Annotation (@ComponentScan의 대상)

- 직접적인 비즈니스 로직에서 벗어난 기능들 (외부 API, 다수 구성 요소의 공유 가능 기능 등..)

- 다른 어노테이션을 쓰기 애매할 때 사용.

 

2) @Controller >> Presentation

: MVC 패턴의 컨트롤러, 즉 사용자 입력 담당 요소

- 주로 @RequestMapping과 함께 사용

 

3) @Service >> Business Logic

: 서비스의 주요 흐름, 비즈니스 로직을 담당하는 요소

- 여러 요소들의 기능을 조합해 실제 서비스를 제공하는 주요 기능 ~> @Controller로부터 입력을 받고/ @Repository로부터 데이터를 받고 이를 바탕으로 결정을 전달.

 

4) @Repository >> DataBase

: 데이터베이스와의 소통을 목적으로 하는 요소

 

5) @Configuration 

: 프로젝트 내부에서 사용하기 위한 설정을 담고 있는 요소.

- 컴포넌트의 동작과 직접적인 연관성이 적음.

+ @Bean : 메서드의 결과를 Bean 객체로 관리하고 싶을 때

-  외부 라이브러리 객체를 Bean으로 등록하는데 활용 가능.

// AppConfig class
@Configuration
public class AppConfig {
    
    @Bean
    // 메서드의 결과로 반환되는 객체를 Bean 객체로 활용해주세요.
    public AppConfigData configData() {
        return new AppConfigData("url", "apiKey");
    }
    
    // 외부 라이브러리 객체
    @Bean
    public Gson gson() {
        return new Gson();
    }
}


// AppConfigData class
//설정 값을 모아두는 클래스
@Getter
public class AppConfigData {
    private String connectionUrl;
    private String apiKey;

    public AppConfigData(String connectionUrl, String apiKey) {
        this.connectionUrl = connectionUrl;
        this.apiKey = apiKey;
    }
}

 

728x90

'Programming > Spring, SpringBoot' 카테고리의 다른 글

Profiles  (0) 2024.01.15
Logging  (0) 2024.01.15
Spring Data JPA (Java Persistence API)  (2) 2024.01.07
MyBatis  (1) 2024.01.04
Post/Redirect/Get : redirect를 사용해야하는 이유  (0) 2024.01.04

BELATED ARTICLES

more