[오전]
"의존성"
: 어떤 코드를 수행할때에 필요한 다른 부분의 코드 내용이 있는가?
"주입"
: 필요한 다른 부분의 코드 내용을 추가하는 것
ex) jdbc 유틸 코드를 사용하기 위해서는 의존성이 있기 때문에주입해주어야한다
(라는 비슷한 내용이 실무에서는 자주 나온다.)
컨테이너 = 객체 생성의 위치를 메모리 위치를 기억해서 자동적으로 수정해준다.
<bean class="test.IPhone" id="apple" lazy-init="true" init-method="initMethod" scope="singleton">
<constructor-arg ref="apple1"></constructor-arg>
<constructor-arg value="1234"></constructor-arg>
</bean>
<bean>
<!--
class : 객체 (new, 개발자 메모리, 힙 메모리)를 생성
id : 객체명
lazy-init : 명시적 대기
init-method : 생성자 개념이 없는 언어가 있었기 때문에 생성자 메서드 대용으로 사용
scope : 하나의 객체를 여러번 생성해야한다면 사용한다.
<constructor-arg>
ref : 사용할 객체의 객체명(bean : id)
value : 값을 입력해서 사용할때 사용
type : 데이터 타입을 명시해줄때 사용
-->
<property name="watch" ref="apple1"/>
<property name="num" value="1234"></property>
<!--
name : Setter 명
ref : 사용할 객체의 객체명(bean : id)
value : 값을 입력해서 사용할때 사용
-->
의존성 주입 = DI (두가지 방법이 있다 생성자 주입, Setter 주입)
1) 생성자 주입 : 의존 주입을 하나라도 안하면 못한다. 만약 제한 보안성으로 무조건 있어야할때 생성자 주입을 많이 쓴다.
의존주입대상 생성자 먼저 호출
생성자 호출
이 처럼 Java 생성자 메서드에 new(개발자 메모리, 힙 메모리)를 생성하지 않고 인자값으로 추가해주고
추가된 인자 값에 맞는 필요한 객체, 변수를 <bean> 태그 내부에 <constructor-arg> 태그로 추가한다면
Spring 내에서 자동으로 인자 개수가 맞는 생성자 메서드를 호출하여 사용하게 된다.
여기서 다른 타입의 인자가 두가지 이상되는 경우
<bean> 태그를 추가하거나 하나의 인자를 선택하여 사용해야한다.
다만 이런 경우는 많이 있지 않으니 참고만 하면 좋다.
2) Setter 주입 : 웹에서는 Setter주입을 많이 사용하는 이유는 사용자는 사용이 멈추는 것이 가장 큰 불편이기 때문이다.
기본생성자 먼저 호출
의존주입대상 setter 호출
Setter 호출에는 property 태그를 사용한다.
Setter 는 모든 인자값이 없어도 실행이 되어 웹에서 사용자의 편의성을 증가 시키기 위해 많이 사용된다.
'국비 내용 정리 > Spring' 카테고리의 다른 글
국비 61일차 내용정리 (Spring MAV) (0) | 2024.10.07 |
---|---|
jsp -> Spring까지의 복습 정리 (0) | 2024.10.07 |
국비 60일 내용정리 (Spring 의존성 주입 방법) (1) | 2024.10.04 |
Spring 복습 (0) | 2024.10.04 |
국비 58일 내용 정리 (Spring) (0) | 2024.10.01 |