일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바제너릭
- 데이터베이트h2
- JPAproxy
- JPA프록시
- 스프링부트
- 임베디드타입
- dockercmd
- JPAmapping
- jpqlquery
- JDBC connection pool
- spring
- javageneric
- springbootH2
- gitinitial
- embededtype
- springbootproxy
- jpa
- 제이피큐엘쿼리
- springboot기본설정
- OSIV
- JPA값타입
- 에이치투데이터베이스
- 스프링부트기본설정
- Git
- sql
- JPA Hint & Lock
- Open EntityManager
- MySqlType
- 이해와 원리
- httppie
Archives
- Today
- Total
빡코
[스프링]스프링 컨테이너 본문
@Primary 어노테이션을 사용하여 주입 받는 Repository의 우선순위를 결정할 수 있다.
스프링 컨테이너 없이 직접 의존성을 주입도 가능하다. 하지만 사용하는 Repository가 A에서 B클래스로 변경될 경우 직접 전체 코드를 변경해 주어야하는 번거로움이 발생한다. 이런 경우, 스프링 컨테이너를 사용하여 스프링이 직접 의존성을 관리할 수 있게 위임하여 문제를 해결 수 있다. 이것을 제어의 역전이라고 한다.
@RestController
public class BookController {
private final BookService bookService;
public BookController(BookService bookService) {
this.bookService = bookService;
}
@PostMapping("/book")
public void saveBook() {
bookService.saveBook();
}
}
@Service
public class BookService {
private final BookRepository bookRepository;
public BookService(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
public void saveBook() {
bookRepository.saveBook();
}
}
Repository A
@Primary
@Repository
public class BookMySqlRepository implements BookRepository{
@Override
public void saveBook() {
}
}
Repository B
@Repository
public class BookMemoryRepository implements BookRepository{
private final List<Book> books = new ArrayList<>();
public void saveBook() {
//book.add
}
}
'Java > Spring-boot' 카테고리의 다른 글
[토비_스프링부트] #3 DI와 테스트, 애노테이션 활용 (0) | 2024.01.02 |
---|---|
[스프링]스프링 컨테이너를 다루는 방법 (1) | 2023.12.27 |
[스프링+DB]Spring에서 Database 접근하기 (0) | 2023.12.26 |
[스프링부트] 프로젝트 초기 기본 설정 (0) | 2023.02.05 |
스프링부트_JPA_데이터베이스_에러 (0) | 2020.01.05 |