의존 자동 주입
@Autowired 애노테이션을 적용한 빈이 없을 때
| java: cannot find symbol symbol: method memberDao() location: class config.AppCtx |
오류 발생
@Autowired 애노테이션을 붙인 주입 대상에 일치하는 빈이 두 개 이상일 때
| ... at main.MainForSpring.main(MainForSpring.java:18) Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'spring.MemberPrinter' available: expected single matching bean but found 2: memberPrinter1,memberPrinter2 |
오류 발생
자동 주입을 하려면 해당 타입을 가진 빈이 어떤 빈인지 정확하게 한정할 수 있어야 하는데 같은 타입의 빈이 여러 개여서 어떤 빈을 자동 주입 대상으로 선택할지 한정 지을 수 없어서 익셉션 발생
Bean 생성자를 찾거나 정의하지 못할때
| at main.MainForSpring.main(MainForSpring.java:18) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'spring.MemberPrinter' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} |
오류 발생
@Qualifier
자동 주입 가능한 빈이 두 개 이상일 때 지정하는 방법
@Autowired 애노테이션에서 자동 주입할 빈을 한정 값을 지정하는 방식
= @Autowired @Bean 이 사용된 메서드 위에 @Qualifier("명칭") or @Qualifier을 사용해 지정
이때 @Qualifier 일 경우 빈의 이름을 한정자로 지정함(기본 한정자)
@Override
상위 클래스의 메서드를 재정의 했음을 의미함
자동주입 대상이 필수가 아닌 경우
- @Autowired(required=false)
- 의존 주입 대상에 Optional<>
- @Nullable-@Autowired 붙인 세터 메서드에 @Nullable 애노테이션을 의존 주입 대상 파라미터에 붙이기
어노테이션을 사용하는 이유
주석처럼 달아 특수한 의미 부여, 기능 주입에 사용됨
프로그램에게 추가 정보를 제공하는 메타 데이터를 전달하기 위해=>컴파일러에게 문법 체크를 하도록 알린다
@Component
컴포넌트 스캔 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능
설정 클래스에서 빈으로 등록하지 않아도 운하는 클래스를 빈으로 등록할하도록 만들어줌
인터페이스란
상수와 추상메서드로만 이루어짐
멤버변수 선언 불가
다른 클래스와 상호작용할때 필요한 일종의 규격,조건
interface 인터페이스명{
...
}
implement
인터페이스를 상속
다중 상속 가능(import는 불가능)
컨테이너의 라이프사이클
컨테이너란
컨테이너에서 빈 객체를 구해서 사용함=> 빈 객체를 담는 것=컨테이너
(컨테이너 초기화->빈 객체의 생성, 의존 주입, 초기화)
↓
컨테이너 사용: 메서드를 이용해 컨테이너에 보관된 빈 객체를 구한다는 것을 뜻함
↓
컨테이너 종료
빈 객체의 라이플 사이클
객체 생성 ->의존 설정->초기화->소멸
본 포스트는
스프링5 프로그래밍 입문 - YES24
스프링 프레임워크의 버전업으로 개선된 내용을 담았다. 처음 스프링을 배우고자 하는 독자들이 입문할 때 필요한 것은 스프링의 방대한 내용이 아닌 기초와 전반적인 흐름을 잡아주는 것으로
www.yes24.com
Power JAVA Compact - YES24
자바는 현재 전 세계 개발자들이 가장 많이 사용하는 언어이기 때문에 컴퓨터 공학도라면 반드시 알고 지나가야 하는 중요한 주제이다. 이 책의 가장 큰 목표는 입문자들이 쉽게 이해할 수 있는
www.yes24.com
책과
Item 40. @Override 애너테이션을 일관되게 사용하라 | Carrey`s 기술블로그
서론 자바가 기본으로 제공하는 애너테이션 중 보통의 프로그래머에게 가장 중요한 것은 @Override일 것이다. @Override는 메서드 선언에만 달 수 있으며, 이 애너테이션의 의미는 상위 클래스의 메
jaehun2841.github.io
@Override 어노테이션의 의미와 사용 이유는 무엇일까?
어노테이션은 JDK5 부터 등장하였으며, 클래스나 메서드, 변수에 @을 사용하는 것을 말합니다.어노테이션은 사전적 의미로 주석을 뜻합니다. 주석과는 역할이 다르지만, 주석처럼 달아 특수한 의
velog.io
를 참고했습니다.
'언어공부 > java, spring' 카테고리의 다른 글
| [0303] java (0) | 2022.03.03 |
|---|---|
| [0217]java 기본 (0) | 2022.02.17 |
| [0216] 이클립스 설정 및 자바 기초 (0) | 2022.02.16 |
| [0212] java (0) | 2022.02.12 |
| [0210]-spring (0) | 2022.02.10 |