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 |