
@Primary //우선권
@Repository
public class BookMemoryRepository implements BookRepository{
@Override
public void saveBook() {
}
}
클래스에 붙이는 어노테이션
@Bean을 사용할 때 함께 사용해야함
외부 라이브러리, 프레임워크에서 만든 클래스를 등록할 때 사용
ex) JdbcTemplate
메소드에 붙이는 어노테이션
메소드에서 반환되는 객체를 스프링 빈에 등록한다.
외부 라이브러리, 프레임워크에서 만든 클래스를 등록할 때 사용
개발자가 직접 만든 클래스를 스프링 빈으로 등록할 때 사용
개발자가 직접 만든 클래스를 스프링 빈으로 등록할 때 사용
주어진 클래스를 컴포넌트로 간주한다.
이 클래스들은 스프링 서버가 뜰 때 자동으로 감지된다.
개발자가 직접 작성한 클래스를 스프링 빈으로 등록할 때 사용
1. 주입받는 곳에 @Qualifier("클래스명") 입력
2. 스프링빈 입력할 때 특별한 별칭을 만든 뒤, 주입받는 곳에 @Qualifier("별칭") 방식도 가능
의존성 주입시 우선시 되는 어노테이션
🚨@Qualifier VS @Primary
사용하는 쪽에서 직접 적어준 @Qualifier가 이긴다.
@Autowired를 사용했으나, 버전업 되면서 사라짐setter와 @Autowired 사용setter를 사용하고 상단에 @Autowired 붙여줌@Autowired 사용1-1. 생성자를 이용해 주입받는 방식 : 예시
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
1-2. 생성자를 이용해 주입받는 방식 : 예시 (lombok 사용시)
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
}
스프링이 만든 객체들을 관리하는 컨테이너
예시
ApplicationContext Context = SpringApplication.run(LibraryAppApplication.class, args);
실제로 스프링부트 앱을 실행하는 코드
예시
SpringApplication.run(LibraryAppApplication.class, args);