분류 전체보기
-
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 인트로스펙션 모드를 지원하기도 하며 간결하고 ..
-
7장) 7.1 SQL과 DAO의 분리 ~ 7.2 인터페이스의 분리와 자기참조 빈Java & Spring/토비의 스프링 3.1 2021. 8. 6. 14:09
7장 스프링 핵심 기술의 응용 스프링의 모든 기술은 객체지향적인 언어의 장점을 적극적으로 활용해서 코드를 작성하도록 도와줌 앞서 학습한 3대 핵심기술인 IoC/DI, 서비스 추상화, AOP를 Application 개발에 활용해서 새로운 기능을 만들어보고, 스프링의 개발철학과 추구하는 가치, 스프링 사용자에게 요구되는 게 무엇인지 알아보자 7.1 SQL과 DAO의 분리 DAO에서 SQL 분리하기 반복적인 JDBC 작업 흐름은 템플릿, 트랜잭션과 예외처리 작업은 서비스 추상화와 AOP로 DAO로 부터 분리했다 DAO는 데이터를 가져오고 조작하는 작업의 인터페이스 역할 데이터 엑세스 로직이 바뀌지 않더라도 DB 테이블, 필드 이름과 SQL 문장의 변경이 일어나는 경우, 현재 구조에서는 DAO를 수정해야함 번거..
-
외부 통신 - (RestTemplate, AsyncRestTemplate, WebClient, HttpURLConnection, HttpClient ) 간략 정리Java & Spring/기타 2021. 7. 29. 17:11
RestTemplate Spring 3.0 부터 지원 Bolierplate code를 줄여줌 RestAPI를 사용해야하는 경우 적합 Multi-Thread & Blocking 방식 JDK HttpURLConnection, Apache Http Components 등과 같이 기본 HTTP 클라이언트 라이브러리를 통해 템플릿 메서드 API를 제공하는 HTTP 요청을 수행하는 동기식 client RestTemplate은 HTTP 메소드에 대한 시나리오를 제공하고, exchange와 excute 메소드를 제공 spring에서 5.0부터는 org.springframework.web.reactive.client를 사용하는 것을 권유 최신 API와 동기, 비동기, 스트리밍 시나리오를 지원 AsyncRestTempla..
-
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 설정 미해결 빈 후처리기를 이용한 자동 프록시 생성기 스프링은 컨테이너로서 제공하..