2023.02.22 / Spring

기가지니·2023년 2월 22일
1

XMl설정 및 annotation

Auto-Wiring

: 자동으로 의존객체를 주입하는 기능
명시적인 언급없이도 Bean이 주입되는 기능

XML방식은 의존관계 파악이 용이하지만 너무 많아지면 힘들어요!

Auto-wiring의 3가지 방식

1) XML에서 autowire="byname" (bean 속성)
이런 속성 추가시 자동으로 연결
이름으로 의존성주입
2) XML에서 autowire="byType(class type임)"
속성 추가 시 자동연결. Bean의 자료형을 이용해서 연결하는 방식
3) @autowired라는 annotation이용(byType을 기반으로 주입)

Annotation 기반 처리

1) @component
: class에 설정하고 해당 클래스의 instance가 해당 class에 자동으로 bean 등록

xml에서는 각 bean에 대한 id를 직접 설정했는데
  <bean id="myFoo" class=".....myFoo />
  
component는 bean의 이름을 아이디로 사용(id 첫글자는 소문자임)
@Componet("myFoo")
사용하면 다음과 같은 명시적 <bean>설정 생략 가능

Annotation설정을 하려면 XML에 특정한 코드를 넣어야 해요

2) @Autowired
: 자동으로 dependency 설정하기 위해 사용
class에 붙을 수 있어요
field에 붙을 수 있어요
method에 붙을 수 있어요(일반적으로 setter를 지향. 하지만 일반 method도 붙을 수 있어요)
type을 이용해서 설정

//동일한 Data type을 가지는 객체를 주입
//만약 같은 타입이 2개 이상 - field, patameter이름으로 주입

3) @Qualifier
: Autowired랑 같이 많이 써요.
타입이 같은 상태에서 bean의 이름을 가지고,
자동 주입 가능한 의존 객체가 여러개 존재할 때, 특정객체를 선택하도록 지정

2) @Resource
: 자동주입하는거 Autowired랑 기능은 같음
단, @ResourcebyName을 이용해서 자동주입을 함
(하지만 Autowired를 주로 많이 씀)

대표적인 Annotation @Autowired

연습해보자
@Autowired(requied=false)
자동 주입하는데 꼭 필요하진 않다

@Autowired를 적용할 수 있는곳 3가지
constrctor
:Autowired사용 가능한지 확인해보자
field
:(setter를 거치는지 확인해보자!)
method)
: Autowired거칠떄
setter를 거치는지 확인해보자!

3) @scope
: 기본값은 싱글톤. 해당 빈을 prototype으로 바꾸려면 scope("prototype")를 클래스 위 @component하단에 지정해주자

profile
지니야 코딩 해줘

0개의 댓글