728x90
🏓 스프링 컨테이너와 스프링 빈
- @RestController 의 역할은 해당 객체를 API 진입 지점으로 만들어 줄 뿐 아니라, 해당 클래스를 스프링 빈으로도 등록시킨다.
- @SpringBootApplication 을 최초에 실행 서버 위에 붙였다. 이 어노테이션은 다양한 설정들을 자동으로 해주는데 그 중 하나가 스프링 서버 내부에 거대한 컨테이너를 만드는 것!
- **컨테이너 안에 들어가는 클래스를 ‘스프링 빈’**이라고 부른다.
- 스프링 컨테이너는 빈으로 등록된 클래스가 필요로 하는 객체를 컨테이너 내부에서 찾아 인스턴스화를 진행해준다.
♦️서버 실행 시 순차 발생하는 일
- 컨테이너가 시작된다.
- 컨테이너에 많은 빈들이 ‘자동 등록 된다’
- 개발자가 수동 설정한 스프링 빈들도 등록된다.
- 필요한 의존성도 자동 설정된다.
♦️스프링 컨테이너 사용하는 이유
수정해야 할 코드가 줄어든다.
♦️스프링 컨테이너 다루는 방법
@Configuration : 설정 클래스 정도로 생각하자
@Bean: 빈 등록. 해당 메소드가 반환하는 객체를 스프링 빈으로 등록하는 어노테이션
- 사용 예시
@Configuration
public class UserConfiguration{
@Bean
public UserRepository userRepository(JdbcTemplate jdbcTemplate){
return new UserRepository(jdbcTemplate);
}
@Bean
public UserService userService(UserRepository userRepository){
return new UserService(userService);
}
}
1) 일반적으로 개발자가 ‘직접’ 만든 클래스를 빈으로 등록 시
- @Service, @Repository 를 사용한다.
2) 외부 라이브러리나 프레임워크에 만들어져있던 클래스를 빈으로 등록 시
- @Configuration + @Bean 을 사용한다.
🟦 @Component 어노테이션
- 이 어노테이션 붙인 클래스를 ‘컴포넌트’로 간주하고, 서버가 틀 때 자동 감지되게 함
- 컨트롤러, 서비스, 리포지토리가 모두 아닌 추가 클래스를 빈으로 등록 시 종종 사용함
🟦 @Qualifier(”___”) 어노테이션
- 주입 받는 쪽에서 특정 스프링 빈 선택할 수 있게 해줌
- 스프링 사용하는 쪽, 등록하는 쪾 모두 사용 가능하다.
- 우선순위는 @Primary 보다 높다.
🟧 스프링 빈 등록 방식 (3가지)
1) 생성자를 통해 주입받기 | 권장됨
2) setter() 를 통해 주입받기
- @Autowired 붙여야 인식함
3) 필드로 직접 주입받기
- @Autowired 붙여야 인식함
728x90
'Web(웹)_관련 공부 모음' 카테고리의 다른 글
개념 | 트랜잭션 (Transaction)의 개념, commit과 rollback (0) | 2023.07.24 |
---|---|
개념 | SQL 직접 사용하는 것의 문제, 그 해결책인 JPA (0) | 2023.07.21 |
개념 | Controller, Service, Repository 구조 분리하기 (0) | 2023.07.18 |
Spring 서버에 MySQL DB 연결 및 API 리팩토링 (0) | 2023.07.18 |
개념 | DAO, DTO, VO 개념 비교 (0) | 2023.07.18 |