반응형
SMALL
- <bean> 에 따로 autowire 속성 쓰면 각 객체마다 auto-wiring
- <beans> 에 default-autowire 속성 쓰면 모든 객체에 한번에 auto-wiring
근데 뭐 이렇게해도 특정한 객체에 따로 걸기도 가능
<setter-based injection>
1. byName
- 주입받을 객체(name)와 주입될 객체(ref) 이름이 같으면 그거보고 이름을 기반으로 알아서 주입해라
- <bean ~~ autowire="byName">
- 값은 (String song 이런거) 생략 불가능해 무조건 <property name="song" value="Jingle Bell"/> 이런식으로 써줘야해
2. byType
-
<constructor-based injection>
- constructor
<auto-wiring + 명시적 혼합>
- 자동 설정을 적용하되, (일부)property에 대해 명시적으로 설정
- <property>와 <constructor-arg>에서 명시적인 설정은 항상 auto-wiring보다 우선 적용됨
- byName, byType
: 주입 가능한 bean이 없으면 에러는 안나고 주입 안함
- byType, constructor
: 주입 가능한 type의 bean이 여러개이면 에러(exception) 발생
- constructor
: 주입 가능한 생성자가 여러개이면 에러(exception) 발생
- 장점 : 설정 코드의 양과 복잡도를 줄일 수 있음
(단, 한개씩만 존재할 때 효과적)
- 단점 : 객체들 사이의 의존 관계를 명확히 파악하기 어렵고 부작용이 발생할 위험이 있음
- 프로젝트 전체에 일관성 있게 적용해야 함
< 부모 Bean을 통한 Bean의 재사용 >
- 추상 bean을 정의해서 그 설정을 재사용 (entity 같은 개념)
- 부모 bean 한테 class랑 property 다 상속 받음
- 자식 bean은 재정의하거나 추가 가능
- <bean>의 abstract 속성
: true 이면 추상 bean 정의 = 부모 bean
: 부모 <bean ~~ abstract="true">
- <bean>의 parent 속성
: 자식 bean에서 부모 bean의 id 지정
: <bean ~~ parent="부모bean의id">
: 이 id를 가진게 부모 bean이고 그걸 상속받겠다.
- 중복 부분의 클래스가 같으면 부모 bean에 class 속성 써주고 중복 부분 클래스가 다르면 부모 bean에는 class 속성 안써주고 자식 bean 각각에 써줌
반응형
LIST
'SPRING' 카테고리의 다른 글
DI Java Code (0) | 2019.03.27 |
---|---|
DI Annotation (0) | 2019.03.25 |
DI XML / SpEL (property 방식) (0) | 2019.03.19 |
DI XML / Collection Wiring (property 방식) (0) | 2019.03.19 |
DI XML / 의존 관계 설정 2 (property 방식) (0) | 2019.03.19 |