p.48 ~ p.92
- Bean 사용
xml 파일을 만들어서
<bean id = "tv" vlass = "패키지명. 클래스명".>
형식의 Bean을 입력하면 된다
위 Bean의 의미는
tv라는 변수 이름의 [패키지명. 클래스명]의 객체를 생성 한다
- AbstractApplicationContext factory = new GenericXmlApplicationContext("xml 이름")
[1] GenericXmlApplicationContext : 파일 시스템이나 클래스 경로에 있는 XML 설정 파일을 로딩하여 구동하는 컨테이너 이다
- TV tv = (TV)factory.getBean("tv")
factory.getBean("tv") 라는 의미는 Xml파일의 Bean의 id를 불러온다
[id = tv] = [getBean("tv")]
- <import.> 엘리먼트
<beans.>
<import resource="context-datasource.xml"/.>"
<import resource="context-transaction.xml"/.>"
</beans.>
[1] context-datasource.xml
[2] context-transaction.xml
위 xml 파일 들이 두 가지로 나눠 져 있는데 이것을 한 파일로 통합해주는 것을 의미한다
- <bean.> 엘리먼트
<bean id = "tv" vlass = "패키지명. 클래스명".>
빈은 위에서 적었듯이 객체를 생성하는 것을 의미한다
- init - method 속성
<bean id = "tv" vlass = "패키지명. 클래스명" init-method = "초기화 할 메소드".>
init-method는 처음 Bean의 객체를 생성할 때 실행시킬 초기화 메소드를 설정할 수 있는 것을 의미한다
- destroy - method 속성
<bean id = "tv" vlass = "패키지명. 클래스명" destroy-method = "Bean 삭제 시 실행시킬 메소드".>
destroy - method는 Bean을 삭제시킬 때 실행되는 메소드를 설정할 수 있다
factory.close( ) 라는 빈을 불러오는 GenericXmlApplicationContext의 메소드 중 close( ) 메소드를 사용해서 빈을 종료시킬 때 메소드를 실행 시킨다
- scope 속성
<bean id = "tv" vlass = "패키지명. 클래스명" scope="singleton"./>
scope는 객체가 하나만 필요할 때 여러개의 객체를 만들어도 실제 주소값은 하나만 가르키도록 셋팅하는 Singleton을 기반으로 하는 속성이다.
기본 셋팅은 Singleton이나 Bean을 요청할 때 마다 객체를 생성해야 할 때는 prototype을 사용한다
- 의존성 관계
의존성 관계란?
객체와 객체의 결합 관곌르 의미한다. 즉, 하나의 객체에서 다른 객체의 변수나 메소드를 이용해야 한다면 이용하려는 객체에 대한 객체 생성과 생성 된 객체의 레퍼런스 정보가 필요하다
- constructor - arg ref
<bean id = "tv" vlass = "패키지명. 클래스명".>
<constructor-arg ref="sony"/.>
<constructor-arg value="2700000"/.>
</bean.>
<bean id = "sony" vlass = "패키지명. 클래스명".>
즉 , sony 라는 클래스의 객체를 불러오는 것을 의미하고
value는 int 변수에 값을 넣어 주는 것을 의미함
setter 사용
<bean id = "tv" vlass = "패키지명. 클래스명".>
<property name="speaker" ref="apple"/.>
</bean.>
<bean id = "apple" vlass = "패키지명. 클래스명".>
Setter로 셋팅 된 apple 클래스에 값을 입력해주는 셋팅 방법
p 네임스페이스 사용
Bean 셋팅값에 추가 할 명령어
xmlns:p="http://www.springframework.org/schema/p".
<bean id = "tv" vlass = "패키지명. 클래스명" p:speaker-ref="apple" p:price="270000".>
</bean.>
<bean id = "apple" vlass = "패키지명. 클래스명".>
p 네임스페이스를 사용해서 값을 셋팅해줌
- Collection 사용
List - 순서 유지, 중복 허용
Set - 순서 유지X, 중복 X
Map - 키와 값 쌍으로 저장
<property name="addressList".>
<list.>
<value.>입력할 내용</value.>
</list.>
</property.>
<property name="addressList".>
<set value-type="java.lang.String".>
<value.>입력할 내용</value.>
</set.>
</property.>
<property name="addressList".>
<map.>
<entry.>
<key.><value.>키값 입력</value.></key.>
<value.> 내용값 입력</value.>
</entry.>
</property.>