본문 바로가기
반응형

Autowired6

@Resource 관련 이전 포스팅에서 Autowired 관련해서 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 포스팅에서 다룰 Resource 랑 공통점은 의존성을 주입 받기 위한 annotation이다. 그럼 둘의 차이에 대해서 알아보면 Autowired Resource 출처 Spring Framework 표준자바 import org.springframework.beans.factory.annotation.Autowired javax.annotation.Resource bean 검색 시 타입 우선 검색 이름 우선 검색 이름 지정 @Autowired @Qualifier("test") @Resource(name = "test") 의 차이들이 있다. 여기서 주요하게 봐야하는것은 bean 검색시 타입 우선과 이름.. 2023. 9. 22.
[error] no qualifying bean of type available: expected at least 1 bean which qualifies as autowire candidate 스프링 사용하다가 빌드를 하거나 서버 기동시 제목과 같은 에러를 만날때가 있다. no qualifying bean of type available: expected at least 1 bean which qualifies as autowire candidate 구글 번역기를 돌리면 이 뜻이다. - 사용 가능한 유형의 적격 bean 없음: autowire 후보로 적격한 최소 1개의 bean이 예상됩니다. 말 그대로 호출한 Bean이 없다는 것이다. 아래 참고 포스팅을 참고하여 Bean등록 절차를 확인하고 다시 한번 코드를 살펴보는것이 필요하다. 참고 포스팅 https://thenicesj.tistory.com/320 Spring Bean 등록(@Bean은 @Configuration 내에) 이전 포스팅에서 .. 2023. 8. 18.
의존관계 주입시 Bean이 없을때 예전 포스팅에서 의존관계 생성자 주입에 대해서 다룬 포스팅이 있다. 자세한 내용은 참고 포스팅을 참고 바란다. 코드에서 Bean을 불러오는 코드가 아래와 같이 있다. @Autowired public void method(Test test) { System.out.println("TestBean = " + test); } 겉으로만 봤을땐 문제가 없어보이지만 문제가 생기는 경우는 Test라는 클래스가 Bean에 들어가있지 않을 경우에 에러가 난다. 그럴 경우엔 3가지 방식으로 회피를 할수 있다. autowired(required=false) 필수값 설정을 false로 설정 @Autowired(required=false) public void method(Test test) { System.out.printl.. 2023. 7. 22.
순환 참조란? 스프링을 사용하면서 서버를 띄우니 아래와 같은 에러가 발생 하였다. The dependencies of some of the beans in the application context form a cycle: ┌─────┐ | autowiredTestA defined in file [/Users/eclipse-workspace/testProject/target/classes/com/test/autowired/AutowiredTestA.class] ↑ ↓ | autowiredTestB defined in file [/Users/eclipse-workspace/testProject/target/classes/com/test/autowired/AutowiredTestB.class] └─────┘ 순환 참조가 .. 2023. 4. 17.
Constructor Injection 방식을 권장하는 이유 이전 포스팅에서 autowired 방식과 requiredArgConstructor를 사용하여 final로 변수 선언하여 의존성 주입하는 방법에 대해서 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅을 확인하길 바란다. 이 포스팅에서는 좀더 심화되게 Constructor Injection 방식을 권장하는 이유에 대해서 다뤄보려고 한다. 일단 스프링부트에서는 Constructor Injection 방식이 단일 생성자이면서 , 그 생성자의 파라미터가 빈 일경우 스프링이 자동으로 주입을 해준다고 하고, 그럼으로써 @Autowired를 사용하지 않아도 되게 된다. 일단 의존성 주입의 방법은 3가지가 있다. 생성자 주입(Constructor Injection) 필드 주입(Field Injection) 세터 주입(.. 2023. 1. 3.
@Autowired 대신 @RequiredArgsConstructor Spring 에서는 다양한 장점이 존재하는데 그중 하나는 의존성 주입(DI) 에 대한 개념이다. 이 개념이 어떤 의미인지 모른다면 아래 참고포스팅에서 확인하고 오면 도움이 될것이다. 여기서 나오는 annotation중 하나는 autowired 라는 annotation이고 이 annotation의 역할은 스프링 bean에 등록되어있는 객체를 주입해주는 역할이다. 하지만 스프링팀에서 autowired를 사용하는것보다 RequiredArgsConstructor를 사용하는것을 추천하는 글을 보았다. 일단 먼저 RequiredArgsConstructor annotation은 하는 역할이 자동으로 필수 생성자를 만들어주는 역할을 한다. 비슷한 annotation으로는 NoArgsConstructor, AllArgs.. 2022. 7. 26.
반응형