< 객체 생성 및 의존 관계 설정 방법 = 객체 설정 정보 >
① XML 이용
1. <bean> 태그 이용
컨테이너가 생성할 빈 객체 지정
속성 : id / class
* id : 태그 고유 이름. 다른 <bean> 태그에서 참조할 때 사용
* class : 컨테이너가 생성할 객체의 클래스 이름(패키지명 포함해야함)
<bean id="articleDao" class="article.MysqlArticleDao">
<bean id="articleDao" class="article.MysqlArticleDao" />
2. <beans ~~></beans> : 루트 태그(루트 엘리먼트)
# 객체 주입 방식 2가지 : <constructor-arg> & <property>
--> 이 태그가 있으면 객체 주입하겠다는 것.
--> 어디서 어디로?
--> ref 에 있는 이름인 다른 빈 객체를 ref 가 쓰인 객체에 불러오겠다. 사용하겠다.
3. <constructor-arg> 방식
객체에 생성자를 사용한 방식이라면...
* 객체를 스프링 빈으로 설정하려면 생성자에 전달할 값을 설정해줘야 함
이때 사용되는 태그가 <constructor-arg> ( <bean> 안에 )
<constructor-arg value="spring study" />
- 한 개의 생성자 파라미터를 설정하므로 파라미터가 2개이면 두 개의 <constructor-arg>를 써줘야 함 (순서대로 파라미터라서 순서 중요!)
- 값이 있다면 <constructor-arg> 안에 <value>태그를 쓰거나 <constructor-arg>에 속성으로 value를 준다.
- 다른 빈 객체를 값으로 써야한다면 <value> 태그를 쓰거나 <ref> 태그를 쓰거나 value 속성 말고 ref 속성을 사용한다.
4. <poperty> 방식
- 객체에 setter 메소드를 사용한 방식이라면...
* 이 태그 속 정보를 보고 setter 메소드에 가서 적용됨
<property name="nang" value="25" /> ---> setNang(25)
==> property name 이랑 같은 setter 메소드에 찾아가서 값을 넣어주는 것!
- name 속성 : 프로퍼티 이름 지정
- <constructor-arg>랑 마찬가지로 value 나 ref 가짐
< applicationContext.xml >
이게 결국
ArticleDao articleDao = new MysqlArticleDao();
WriteArticleService writeService = new WriteArticleService(articleDao);
컨테이너가 이걸 실행하는거랑 같음
< 메인 테스트 프로그램 >
* 설정 파일이 완료됐으면 설정 파일 이용해서 컨테이너를 생성할 차례!
* XML 파일을 이용했으면 GenericXmlApplicationContext 클래스 사용
* getBean() 메소드로 객체 가져옴
import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.GenericXmlApplicationContext;public class MainForSpring {public static void main(String[] args) {AbstractApplicationContext context =new GenericXmlApplicationContext("classpath:applicationContext.xml");// XML 설정 파일을 이용한 container 생성 = 직접 컨테이너 생성하는 것// 스프링 실행하면 빨간색으로 정보를 출력함// 위 두줄 코드는 tomcat을 사용하면 필요는 없음// xml 파일이 여러개라면 뒤로 경로 여러개 써주면 됨 (교재 77p 참고)WriteArticleService writeService =context.getBean("writeService", WriteArticleService.class); // writeService 객체 반환(컨테이너에서 가져옴)// getBean : id를 써주면 id에 해당하는 객체를 가져옴// .class : 타입이 WriteArticleService 라는 뜻* 만약 .getBean(WriteArticleService.class) 이렇게 id 없이 타입만 전달되면 이거는 그 타입에 해당하는 빈을 구해서 리턴하는 것Article article = new Article(101, "This is a new article ...");System.out.println(article + " was created.");writeService.writeArticle(article);System.out.println();ReadArticleService readService =context.getBean("readService", ReadArticleService.class);Article result = readService.readArticle(101);System.out.println(result + " was read.");context.close(); //마무리}}
'SPRING' 카테고리의 다른 글
AOP (Aspect-Oriented Programming) (0) | 2019.03.18 |
---|---|
DI / 의존 관계 설정 방법 2 (Annotation 이용 방법) (0) | 2019.03.18 |
DI (Dependency Injection) / 의존 객체 생성 방법 (0) | 2019.03.18 |
Spring Web MVC framework (0) | 2019.03.16 |
spring Components (0) | 2019.03.15 |