언어공부/java, spring

[0212] spring

이자드 2022. 2. 12. 05:03

의존 자동 주입

@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