더북(TheBook)

SearchEngine 인터페이스의 새로운 구현체를 생성하고, 문서 유형을 추가하기 위해 몇 가지 세터 기반 의존성 주입을 사용해보자. 예제 3-3은 새로운 SearchEngineService 클래스다.

 예제 3-3 SearchEngineService.java

package com.apress.isf.spring.service;

 

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

 

import com.apress.isf.java.model.Document;

import com.apress.isf.java.model.Type;

import com.apress.isf.java.service.SearchEngine;

import com.apress.isf.spring.data.DocumentDAO;

 

public class SearchEngineService implements SearchEngine {

 

private DocumentDAO documentDAO;

 

public DocumentDAO getDocumentDAO() {

return documentDAO;

}

 

public void setDocumentDAO(DocumentDAO documentDAO) {

this.documentDAO = documentDAO;

}

 

public List<Document> findByType(Type documentType) {

List<Document> result = new ArrayList<Document>();

for (Document doc : listAll()) {

if (doc.getType().getName().equals(documentType.getName()))

result.add(doc);

}

return result;

}

 

public List<Document> listAll() {

return Arrays.asList(documentDAO.getAll());

}

 

}


예제 3-2와 예제 3-3을 비교해보자. 예제 3-3에서는 직접 집어넣은 코드와 storage 메서드를 제거하고, 세터 메서드를 통해 주입될 새로운 속성인 documentDAO를 추가했다. 하지만 스프링 컨테이너가 이 새로운 속성과 (데이터를 담을) 클래스를 알 수 있게 해줘야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.