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