새로운 강의가 들어오고 intellij에서 프로젝트를 만들고
테스트 파일을 run 했는데 처음보는 오류가 떴다
구글에도 쳐 봤는데 jdk 문제라고 하길래
jdk도 새로 깔고 시스템 환경 변수 설정에 가서 환경변수 경로도
다시 설정해줬다. 약 1시간이상 찾아보고 고민해봐도 안돼서
여쭤봤다. 튜터님께
튜터님께서는 바로 오류를 보시고 찾아주신다음에
하나의 코드를 주셨다. gradle에 첨부를 했다
testImplementation 'org.mockito:mockito-core:3.10.0'
오류가 나는 친구의 의존성을 추가해주고 돌고래를 누르니
바로 실행이 됐다. 최신버전+예외방지 덕분이다
Bean을 수동으로 등록하는 방법
@Configuration
public class PasswordConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
같은 타입의 Bean이 2개라면?
@Autowired 사용
@SpringBootTest
public class BeanTest {
@Autowired
Food pizza;
@Autowired
Food chicken;
}
@Primary 사용
@Component
@Primary
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("치킨을 먹습니다.");
}
}
@SpringBootTest
public class BeanTest {
@Autowired
Food food;
}
@Qualifier 사용
@Component
@Qualifier("pizza")
public class Pizza implements Food {
@Override
public void eat() {
System.out.println("피자를 먹습니다.");
}
}
@SpringBootTest
public class BeanTest {
@Autowired
@Qualifier("pizza")
Food food;
}
만약 Qualifier와 Primary가 동시 적용 됐다면 ?
@SpringBootTest
public class BeanTest {
@Autowired
@Qualifier("pizza")
Food food;
@Test
@DisplayName("Primary 와 Qualifier 우선순위 확인")
void test1() {
// 현재 Chicken 은 Primary 가 적용된 상태
// Pizza는 Qualifier 가 추가된 상태입니다.
food.eat();
}
}
※ 같은 타입의 Bean들에 Qualifier와 Primary가 동시에 적용되어있다면 Qualifier의 우선순위가 더 높다
※ 하지만 Qualifier는 적용하기 위해서 주입 받고자하는 곳에 해당 Qualifier를 반드시 추가해야 한다
※ 같은 타입의 Bean이 여러 개 있을 때는 범용적으로 사용되는 Bean 객체에는 Primary를 설정하고
지엽적으로 사용되는 Bean 객체에는 Qualifier를 사용하는 것이 좋다
'TIL' 카테고리의 다른 글
TIL - 2024/05/23 (0) | 2024.05.23 |
---|---|
TIL - 2024/05/22 (0) | 2024.05.22 |
TIL - 2024/05/20 (2) | 2024.05.20 |
TIL - 2024/05/17 (0) | 2024.05.17 |
TIL - 2024/05/16 (0) | 2024.05.16 |