[토비의 스프링 3.1] 9장 정리

스프링을 이용해 애플리케이션 프로젝트를 처음 구성할 때 알아야할 내용을 알아보자. 스프링 개발에 도움이 되는 개발 툴과 빌드 방법도 살펴보자. 스프링을 애플리케이션에 적용할 수 있는 아키텍처의 종류와 특징에 대해서 알아보자. 자바 엔터프라이즈 플랫폼과 스프링 애플리케이션 스프링으로 만들 수 있는 애플리케이션의 종류에는 제한이 없음. 자바 언어를 사용하는 모든 종류의 프로젝트라면 어디든 사용할 수 있음. 스윙이나 이클립스 RCP로 만드는 독립형 프로그램 애플릿이나 모바일 애플리케이션 개발 스프링을 핵심 엔진으로 사용하는 엔터프라이즈 미들웨어 제품 스프링은 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용됨....

April 9, 2023 · 3 min · 442 words · Me

[토비의 스프링 3.1] 8장 정리

스프링이란 무엇인가? 스프링 프레임워크가 만들어진 이유와 존재 목적, 추구하는 가치는 무엇일까? 스프링의 정의 스프링 : 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션 프레임워크 : 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크임. 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크임. 스프링의 탄생 스프링의 기원은 로드 존슨 책의 예제 코드임. 책에서 강조한 중요한 전략의 하나는 ‘항상 프레임워크로 접근하라’라는 것임....

April 2, 2023 · 5 min · 959 words · Me

[토비의 스프링 3.1] 7장 정리

스프링의 3대 핵심 기술인 IoC/DI, 서비스 추상화, AOP를 애플리케이션 개발에 활용해보자. SQL과 DAO의 분리 SQL을 적절히 분리해 DAO 코드와 다른 파일이나 위치에 두고 관리하자 분리 방법 XML 설정을 이용한 분리 - SQL을 스프링의 XML 설정파일로 빼기 SQL 맵 프로퍼티 방식 - SQL을 하나의 컬렉션으로 담아두기. 맵의 키 값을 이용해 SQL 문장을 가져오게함. 스프링의 설정파일 안에 SQL을 두면 SQL과 DI 설정정보가 섞여 관리하기 어렵다는 문제가 있음. 해결) 독립적인 SQL 제공 서비스가 필요함....

March 5, 2023 · 9 min · 1882 words · Me

[project] 토이 프로젝트 리팩토링 1 - REST API

최근에 영화 리뷰를 저장할 수 있는 웹 서비스를 개발하는 토이 프로젝트를 진행했습니다. MERN(MongoDB, Express, React, Node) 스택으로 개발했으며 TMDB API의 영화 정보를 활용했습니다. 왓챠피디아 같은 커뮤니티형보다는 개인 기록형 영화 리뷰 저장소를 만드는 것을 목표로 했습니다. 그래서 주 기능은 1) 영화를 탐색하고 2) 북마크하고 3) 리뷰를 작성하는 것입니다. 정의한 요구사항 대로 구현하니 기능은 잘 동작하지만 코드 상에는 많은 문제와 개선해야 할 점이 있다는 것을 알게되었습니다. 점차적으로 개선하면서 공부한 것들을 기록하려고 합니다. 제가 생각하는 가장 큰 문제는 잘못 설계된 HTTP API입니다....

February 20, 2023 · 4 min · 685 words · Me

[토비의 스프링 3.1] 6장 정리

Intro AOP는 IoC/DI, 서비스 추상화와 더불어 스프링의 3대 기술임. 단위 테스트 작은 단위의 테스트가 더 좋음. → 테스트 실패시 원인을 찾기가 쉬움. 테스트 단위가 작아야 테스트의 의도나 내용이 분명해짐. 테스트의 대상이 환경이나, 외부 서버, 다른 클래스의 코드에 종속되고 영향을 받지 않도록 고립시킬 필요가 있음. → 테스트 대역 사용 통합테스트 - 두 개 이상의 성격이나 계층이 다른 오브젝트가 연동하도록 만들어 테스트하거나, 또는 외부의 DB나 파일, 서비스 등의 리소스가 참여하는 테스트 단위테스트 vs....

February 5, 2023 · 11 min · 2200 words · Me

[토비의 스프링 3.1] 5장 정리 - 2

5.2 트랜잭션 서비스 추상화 트랜잭션 경계설정 트랜잭션 : 더 이상 나눌 수 없는 단위 작업임. 작업을 쪼개서 작은 단위로 만들 수 없다는 것은 트랜잭션의 핵심 속성인 원자성임. 중간에 예외가 발생해서 작업을 완료할 수 없다면 작업이 시작되지 않은 초기 상태로 되돌려놔야함. 하나의 SQL을 처리하는 경우 DB가 트랜잭션 보장함. 여러 개의 SQL이 사용되는 작업을 하나의 트랜잭션으로 취급해야하는 경우도 있음. 트랜잭션은 시작하는 지점과 끝나는 지점이 있음. 끝나는 방법은 두 가지임. 트랜잭션 롤백(transaction rollback): 두개의 SQL이 있을 때 두번째 SQL이 성공적으로 DB에서 수행되기 전에 문제가 발생할 경우 앞에서 처리한 작업도 취소시켜야 함....

January 29, 2023 · 6 min · 1201 words · Me

[토비의 스프링 3.1] 5장 정리 - 1

5-1. 사용자 레벨 관리 기능 추가 정해진 조건에 따라 사용자의 레벨을 변경하는 기능 추가 5.1.1 필드 추가 Level 이늄 사용자 레벨을 이늄(enum)으로 정의 public enum Level { Basic(1), SILVER(2), GOLD(3); private final int value; Level(int value) { this.value=value; } public int intValue() { return value; } public static Level valueOf(int value) { switch(value) { case 1: return BASIC; case 2: return SILVER; case 3: return GOLD; default: throw new AssertionError("Unknown value: "+ value"); } } } User 필드 추가 public class User { ....

January 14, 2023 · 4 min · 815 words · Me

[토비의 스프링 3.1] 4장 정리

4.1 사라진 SQLException 4.1.1 초난감 예외처리 예외 블랙홀 - catch 문에 아무것도 넣지 않는 경우 무의미하고 무책임한 throws 예외 처리시 핵심 원칙 모든 예외는 적절하게 복구되거나 작업을 중단시키고 개발자에게 통보되어야 함. 4.1.2 예외의 종류와 특징 체크 예외(checked exception) - 명시적인 처리가 필요한 예외를 사용하고 다루는 법 자바에서 throw를 통해서 발생시킬 수 있는 예외 Error - java.lang.Error 클래스의 서브클래스들 시스템 레벨에서 특별한 작업을 하는게 아니라면 애플리케이션에서는 신경 쓰지 않아도 됨. Exception과 체크 예외 체크 예외 - Exception 클래스의 서브클래스이면서 RuntimeException 클래스를 상속하지 않은 것....

January 8, 2023 · 3 min · 594 words · Me

[토비의 스프링 3.1] 3장 정리

Intro 개방 폐쇄 원칙(OCP) : 변화의 특성이 다른 부분을 구분해주고, 각각 다른 목적과 다른 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어주는 것 템플릿 : 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록하는 방법 3.1 다시 보는 초난감 DAO 3.1.1 예외처리 기능을 갖춘 DAO DB 커넥션이라는 제한적인 리소스를 공유해 사용하는 서버에서 동작하는 JDBC 코드에는 반드시 지켜야 할 원칙이 있음. → 예외처리 (예외가 발생할 경우 리소스를 반환하도록 만들어야함....

December 18, 2022 · 5 min · 1063 words · Me

[토비의 스프링 3.1] 2장 정리

Intro 스프링의 핵심 = 객체지향 & 테스트 테스트 = 의도했던 대로 코드가 동작하는지를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업임. 2.1 UserDaoTest 다시 보기 2.1.2 UserDaoTest의 특징 작은 단위의 테스트 테스트하고자 하는 대상이 명확하면 대상에만 집중해서 테스트하는 것이 바람직함. → 테스트는 작은 단위로 쪼개서 집중 (관심사의 분리) → 단위 테스트(unit test) 자동수행 테스트 코드 테스트는 자동으로 수행되도록 코드로 만들어지는 것이 중요함. (자주 반복할 수 있다는 장점이 있음.) 2.1.3 UserDaoTest의 문제점 수동 확인 작업의 번거로움 테스트의 수행은 코드에의해 자동으로 진행되지만 확인하는 일은 사람의 책임....

December 11, 2022 · 5 min · 867 words · Me