TIL)23.06.19_Spring Bean

주민·2023년 6월 20일
0

TIL

목록 보기
21/84

요즘은 강의만 보고 있어서 내용 중 헷갈리는 걸 하나씩 정리해보려고 한다.

Bean이란?

  • Spring에셔 관리하는 객체
  • Bean이 생성되면 Ioc(servlet) container에 등록됨
  • 등록되면 자동으로 객체 생성를 해줌(Chicken chicken = new Chicken();)
  • 보통 기본값으로 설정이 되어 있음
  • Spring 4.3 버젼 이후이고 생성자 선언이 1개 일 때는 @Autowired 생략 가능

Bean 등록 방법

  • class명 위에 @Component 입력
    -> 해당 class명이 Bean으로 들어감(전부 소문자)
  • 등록 여부 확인
    -> class명 옆에 커피콩 모양이 뜸

Bean 사용방법

  • 필드나 메서드 위에 @Autowired 입력
  • Bean을 주입한다고 함(=> 의존성(DI)을 주입)
    -> Food food = new Food를 한 것처럼 메서드나 필드 사용 가능

필드에 Bean 주입

@Autowired
private MemoRepository memoRepository;

 => 사용 예시
void test1() {
	memoRepository.test();
}

메서드에 Bean 주입

@Autowired
public MemoService(MemoRepository memoRepository) {
	this.memoRepository = memoRepository;
}

Bean 2개 등록

-> Food를 인터이스로 두고 두개의 클래스에 implements 을 걸어 Test 클래스에서 사용

* pizza class 에시
@Component 
public class Pizza{
    public void eat() {
        System.out.println("피자를 먹습니다.");
    }
}
  1. @Component을 한 class가 Pizza, Chicken 두 개 있는 경우
    -> 원래는 2번째 줄이 Food food 이나 Food의 Bean이 두개이니 사용하려는 Bean의 이름을 명시해야함
@Autowired
Food pizza;
pizza.eat();
  1. Pizza, Chicken 중 하나에 @Primary 을 명시
    -> @Primary : Bean이 여러개 있는 경우 Primary 가 있는 Bean을 우선적으로 사용
* Chicken class

@Component
@Primary
Food food;
food.eat();
  1. class에 @Qualifier 에너테이션을 사용하여 이름을 명시, Test class에서 명시된 이름을 가져옴
*Pizza

@Component
@Qualifier("pizza")

* Test

@Autowired
@Qualifier("pizza")
Food food;
food.eat();

★ Primary와 Qualifier

  • Primary : 많이 호출하는 객체
  • Qualifier : 덜 호출되어 따로 표기를 하는 객체

0개의 댓글

관련 채용 정보