토비 스프링
-
9장) 9.3 애플리케이션 아키텍처 (vol1 마지막 정리)Java & Spring/토비의 스프링 3.1 2021. 9. 24. 12:11
9장 스프링 프로젝트 시작하기 9.3 애플리케이션 아키텍처 스프링 웹 애플리케이션 아키텍처 결정하기 아키텍처 어떤 경계 안에 있는 내부 구성 요소들이 어떤 책임을 갖고, 어떤 방식으로 서로 관계를 맺고 동작하는지를 규정하는 것 동적인 행위와 관계 9.3.1 계층형 아키텍처 관심, 책임, 성격, 변하는 이유와 방식이 서로 다른 것들을 분리 응집도가 높아지고 결합도가 낮아짐 장점 불필요한 부분까지 변경이 일어나고 이로 인해 작업이 더뎌지고 오류가 발생할 가능성이 적어짐 어느 부분을 수정할지 파악하기 쉬워지고 변경이 필요한 부분만 각각 변경이 필요하고, 독립적인 발전이 가능 인터페이스와 같은 유연한 경계를 만들어두고 분리하거나 모아주는 작업이 필요 아키텍처와 SoC 지금까지는 성격이 다른 코드가 얽혀 있는 것..
-
8장) 8.3 POJO 프로그래밍 ~ 8.4 스프링의 기술Java & Spring/토비의 스프링 3.1 2021. 9. 7. 17:04
8장 스프링이란 무엇인가? 8.3 POJO 프로그래밍 스프링의 기술적 지향점 스프링의 정수는 엔터프라이즈 서비스 기능을 POJO에 제공하는 것 엔터프라이즈 서비스는 보안, 트랜잭션과 같은 엔터프라이즈 시스템에서 요구되는 기술 엔터프라이즈 서비스 기술과 POJO라는 애플리케이션 로직을 담은 코드를 분리했다는 뜻 8.3.1 스프링의 핵심: POJO 스프링의 핵심은 POJO 프로그래밍 스프링 애플리케이션은 두 가지로 구분 POJO를 이용해 만든 애플리케이션 코드 POJO가 어떻게 관계를 맺고 동작하는지 정의해놓은 설계정보 이런 DI 개념을 애플리케이션 전반에 걸쳐 적용하는 것이 스프링의 프로그래밍 모델 스프링의 주요 기술인 IoC/DI, AOP, PSA(Portable Service Abstraction)은 ..
-
8장) 8.1 스프링의 정의 ~ 8.2 스프링의 목적Java & Spring/토비의 스프링 3.1 2021. 9. 7. 17:02
8장 스프링이란 무엇인가? 8.1 스프링의 정의 스프링의 가장 대중적인 정의 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 애플리케이션 프레임워크 일반적인 라이브러리, 프레임워크 특정 업무 분야나 한 가지 기술에 특화된 목표를 가지고 만들어짐 ex) 웹 계층을 MVC로 쉽게 만듦, 포맷과 출력장치를 유연하게 변경할 수 있는 애플리케이션 로그 기능 제공, ORM 등 스프링 애플리케이션 프레임워크 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적인 프레임워크 자바 엔터프라이즈 개발의 이상적인 프로그래밍 모델을 추구하는 데 필요한 기반이 돼주는 코드, 즉 프레임워크가 지금 스프링의 원시버전 애플리케이션 전 영역을 관통하는 일관된 프로그래밍 모델과 핵..
-
7장) 7.6 스프링 3.1의 DIJava & Spring/토비의 스프링 3.1 2021. 8. 30. 13:42
7장 스프링 핵심 기술의 응용 7.6 스프링 3.1의 DI 자바 언어의 변화와 스프링 DI가 적용된 코드를 작성할 때 사용하는 핵심 도구인 자바 언어의 대표적인 두 가지 변화 애노테이션의 메타정보 활용 정책과 관례를 이용한 프로그래밍 애노테이션의 메타정보 활용 자바 코드의 메타정보를 이용한 프로그래밍 자바 코드의 일부를 리플렉션 API 등을 이용해 어떻게 만들었는지 보고 그에 따라 동작하는 기능이 점점 많이 사용됨 리플렉션 API 초기 버전부터 class, interface, field, method 등의 메타정보를 살펴보거나 조작하기 위해 사용 최근에는 자바 코드의 메타정보를 데이터로 활용하는 스타일의 프로그래밍 방식에 더 많이 활용 애노테이션이 정점 애노테이션 자바 코드가 실행되는 데 직접 참여 X ..
-
7장) 7.4 인터페이스 상속을 통한 안전한 기능확장 ~ 7.5 DI를 이용해 다양한 구현 방법 적용하기Java & Spring/토비의 스프링 3.1 2021. 8. 20. 14:09
7장 스프링 핵심 기술의 응용 7.4 인터페이스 상속을 통한 안전한 기능확장 애플리케이션을 새로 시작하지 않고 특정 SQL의 내용만을 변경하고 싶다면 어떻게 해야 할지 생각해보자 7.4.1 DI와 기능의 확장 지금까지 적용한 DI는 일종의 디자인 패턴 or 프로그래밍 모델이라는 관점에서 이해하는 것이 자연스러움 스프링과 같은 DI 프레임워크를 적용하고 빈 설정파일로 애플리케이션을 구성했다고 해서 DI를 바르게 활용하고 있다고 볼 수 없음 DI의 장점은 DI에 적합한 오브젝트 설계가 요구됨 DI를 의식하는 설계 다양한 기능 확장이 가능했던 이유 SqlService 내부 기능을 적절한 책임과 역할에 따라 분리 인터페이스 정의로 느슨하게 연결 DI를 통해 유연하게 의존관계를 지정 DI 덕분에 오브젝트들이 서로..
-
7장) 7.3 서비스 추상화 적용Java & Spring/토비의 스프링 3.1 2021. 8. 8. 17:27
7.3 서비스 추상화 적용 JaxbXmlSqlReader 개선 과제 JAXB 외에 다양한 XML과 자바오브젝트를 매핑하는 기술이 있음 필요에 따라 다른 기술로 변경해서 사용 XML 파일을 좀 더 다양한 소스에서 가져올 수 있게 만든다 앞서 작성한 내용은 UserDao 클래스와 같은 class path 안에서만 XML을 읽어올 수 있음 임의의 class path나 파일 시스템 상의 절대위치 or HTTP 프로토콜을 통해 원격에서 가져오도록 확장하는 방법 생각 7.3.1 OXM 서비스 추상화 OXM (Object-XML Mapping) JAXB 외에 실전에서 자주 사용되는 다양한 XML과 자바오브젝트를 매핑하는 기술(OXM) Castor XML 설정파일 필요 X 인트로스펙션 모드를 지원하기도 하며 간결하고 ..
-
6장) 6.6 트랜잭션 속성Java & Spring/토비의 스프링 3.1 2021. 7. 26. 14:27
6장 AOP 6.6 트랜잭션 속성 앞서 학습했던 PlatformTransactionManager로 대표되는 스프링의 트랜잭션 추상화 적용 중, 트랜잭션 매니저에서 트랜잭션을 가져올 때 사용한 DefaultTransactionDefinition 오브젝트의 용도에 대해 알아보자 6.6.1 트랜잭션 정의 더 이상 쪼갤 수 없는 최소 단위의 작업 트랜잭션 동작 방식 commit() rollback() 이 밖에도 트랜잭션 동작방식을 제어할 수 있는 조건이 존재 DefaultTransactionDefinition이 구현하고 있는 TransactionDefinition 인터페이스는 트랜잭션 동작 방식에 영향을 줄 수 있는 네 가지 속성을 정의하고 있음 트랜잭션 전파, 격리수준, 제한시간, 읽기전용 트랜잭션 전파 이미..
-
6장) 6.5 스프링 AOPJava & Spring/토비의 스프링 3.1 2021. 7. 23. 15:52
6장 AOP 부가기능 적용 후에 기존 설계 코드에 영향을 주지 않도록 제공돼야 함 다른 코드에서는 존재가 보이지 않지만, 메소드가 호출되는 과정에서 다이내믹하게 부가적인 기능을 제공 6.5.1 자동 프록시 생성 타깃 오브젝트마다 비슷한 내용의 ProxyFactoryBean 설정 정보 추가 부분이 남은 해결 과제 중복 문제의 접근 방법 JDBC API를 사용하는 DAO 코드 전략 패턴과 DI를 적용해서 템플릿과 콜백, 클라이언트로 나누어 해결 반복적인 위임 코드가 필요한 프록시 클래스 코드 다이내믹 프록시와 다이내믹 프록시 생성 팩토리 DI를 사용해서 런타임 코드 자동생성 기법으로 해결 반복적인 ProxyFactoryBean 설정 미해결 빈 후처리기를 이용한 자동 프록시 생성기 스프링은 컨테이너로서 제공하..