강의 10 - 강원대학교

Download Report

Transcript 강의 10 - 강원대학교

1
고급자바프로그래밍
(ADVANCED JAVA PROGRAMMING)
강원대학교 컴퓨터학부
2012년 가을학기
담당교수 정충교
1/21
2
7장 스프링 핵심 기술의 응용
2/21
3
3대 핵심 기술
• IoC/DI
• 서비스 추상화
• AOP
3/21
4
7.1 SQL과 DAO의 분리
• SQL을 설정 파일에서 빈의 프로퍼티로 주입
1.
2.
SQL 문장마다 각각 프로퍼티를 설정
SQL 전체를 맵으로 묶어 하나의 프로퍼티로 설정
• SQL 서비스
public interface SqlService {
String getSql(String key) throws SqlRetrievalFailureException;
}
4/21
5
7.2 설정파일로부터 SQL 분리
(인터페이스의 분리와 자기참조 빈)
5/21
6
7.2.1 Object XML Mapping
• JAXB (Java Architecture for XML Binding)
javax.xml.bind.Unmarshaller
6/21
7
7.2.2 XML 파일을 이용하는 SQL 서비스
• XmlSqlService
• 생성자에서 XML 파일을 읽어 객체를 만들고 이로부터
정보를 추출하여 Map 에 저장해 놓음
7/21
8
7.2.3 빈의 초기화 작업
• XmlSqlService
• XML 파일을 읽어 객체를 만들고 이로부터 정보를 추출
하여 Map 에 저장해 놓는 작업을 하나의 메소드로 선언
– loadSql()
• @postConstruct 애노테이션을 이용하여 빈이 생성된 후
loadSql이 실행되도록 함
8/21
9
7.2.4 변화를 위한 준비: 인터페이스 분리
9/21
10
public interface SqlReader {
void read(SqlRegistry sqlRegistry);
}
public interface SqlRegistry {
void registerSql(String key, String sql);
String findSql(String key) throws SqlNotFoundException;
}
10/21
11
11/21
12
자신을 참조하는 빈 형태
12/21
13
7.2.6 디폴트 의존 관계
• 확장 가능한 기반 클래스 – BaseSqlService
BaseSqlService
13/21
14
7.3 서비스 추상화 적용
• 7.3.1 OXM 서비스 추상화
• JAXB
• Castor XML
• JiBX
• XmlBeans
• Xstream
public interface org.springframework.oxm.Unmarshaller {
boolean
Object
supports(Class<?> clazz)
unmarshal(Source source) throws IOException,
XmlMappingException
}
14/21
15
7.3.2 OXM 서비스 추상화 적용
SqlReader를 SqlService 클래스 안에 포함시켜 만든다.
한 개의 빈으로 등록할 수 있다.
• 스프링의 OXM 언마샬러를 사용하도록 고정
15/21
16
위임을 이용한 BaseSqlService의 재사용
• 리스트 7-54
16/21
17
7.3.3 리소스 추상화
• 스프링 Resource
• 파일을 InputStream으로 사용할 수 있게 해 줌
• 설정파일에서 Resource 타입 빈 프로퍼티에 파일 이름을
넣어줌
• 리스트 7-57, 리스트 7-58
17/21
18
7.4 인터페이스 상속을 통한 안전한 기능 확장
• 인터페이스와 DI를 통한 유연한 확장 구조
18/21
19
인터페이스 상속을 이용한 확장구조
19/21
20
7.5 DI를 이용해 다양한 구현 방법 적용하기
• 7.5.1 ConcurrentHashMap을 이용한 수정 가능 SQL 레지
스트리
• 7.5.2 내장형 데이터베이스를 이용한 SQL 레지스트리
• 7.5.3 트랜잭션 적용
20/21
21
끝
21/21