레거시
-
5장 서비스 추상화 (1)24년 11월 이전/책장 속 먼지 털기 - 토비의 스프링 2020. 12. 21. 08:16
책장속 먼지털기 스터디 7차 스터디 날짜 : 2020.12.21 작성 날짜 : 2020.12.20-21 페이지 : 317 - 348 개요 책에서 나오는 "서비스 추상화"란 성격이 비슷한 여러 종류의 기술을 추샇와하고 이를 일관된 방법으로 사용할 수 있도록 하는 것이다. 5장 전체에서는 DAO에 트랜잭션을 적용하면서 어떻게 서비스를 추상화할 수 있는지 알아보지만, 이번 주차 스터디 범위에서는 그 이전 단계까지의 코드를 작성한다. 사용자 레벨 관리 기능 추가 기능을 위한 필드 추가 및 테스트 코드 수정 현재 UserDao는 "CRUD" 기능 외에 어떠한 기능도 가지고 있지 않다. 여기에 다음 비지니스 로직을 추가한다. 사용자 레벨은 BASIC, SILVER, GOLD 중 하나이다. 처음 가입하면 BASIC이..
-
4장 예외24년 11월 이전/책장 속 먼지 털기 - 토비의 스프링 2020. 12. 20. 22:03
4장 예외 책장속 먼지털기 스터디 6차 스터디 날짜 : 2020.12.14 작성 날짜 : 2020.12.20 페이지 : 279 - 315 사라진 SQLException 현재, JdbcContext에서 JdbcTemplate으로 전환하면서, 한 가지 특이점이 발생했다. 바로, 메소드 시그니처에 throws SQLException이 사라진 것이다. JdbcContext 버전 public void deleteAll() throws SQLException { final String query = "delete from users"; this.jdbcContext.executeSql(query); } JdbcTemplate 버전 public void deleteAll() { final String query = ..
-
(5) 클래스24년 11월 이전/백기선의 Study Halle 2020. 12. 19. 12:52
백기선님의 온라인 스터디 "스터디 할래" 5주차 정리 문서입니다. 목표 자바가 제공하는 제어문을 학습하세요. 학습할 것 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 과제 (선택) int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. 클래스 정의하는 방법 클래스를 정의하는 방법은 다음과 같다. 먼저 클래스_이름.java..
-
3장 템플릿(2)24년 11월 이전/책장 속 먼지 털기 - 토비의 스프링 2020. 12. 6. 22:00
책장속 먼지털기 스터디 5차 스터디 날짜 : 2020.12.07 작성 날짜 : 2020.12.06 페이지 : 240 ~ 277 템플릿과 콜백 잠깐 책에 나온 정의를 살펴보자. 템플릿이란? 템플릿은 어떤 목적을 위해 미리 만들어둔 모양이 있는 틀을 말한다. (=JdbcContext) 콜백이란? 콜백은 실행되는 것을 목적으로 다른 오브젝트의 메소드에 전달되는 오브젝트를 말한다. (=StatementStrategy를 구현한 익명 클래스) 템플릿/콜백 패턴의 일반적인 흐름은 다음과 같다. 먼저 클라이언트에서 콜백 객체를 생성한다. UserDao의 deleteAll 메소드를 보자. public void deleteAll() throws SQLException { StatementStrategy stmt = c -..
-
(4) 제어문24년 11월 이전/백기선의 Study Halle 2020. 12. 5. 14:44
백기선님의 온라인 스터디 "스터디 할래" 4주차 정리 문서입니다. 목표 자바가 제공하는 제어문을 학습하세요. 학습할 것 (필수) 선택문 반복문 과제 (선택) JUnit 5 학습 live-study 대시 보드를 만드는 코드를 작성하세요. Github Java Library 활용 LinkedList를 구현 Stack 구현 배열 기반 구현 LinkedList 기반 구현 Queue 구현 배열 기반 구현 LinkedList 기반 구현 선택문 if if문은 조건에 따라, 동작 실행을 컨트롤할 수 있다. 가장 간단한 기본 구조는 다음과 같다. if (조건) { 구문 1; } 구문 2; 구문 2는 무조건 실행이 가능하나 조건이 참일 경우 구문 1 -> 구문2 순서대로 실행된다. 코드는 다음과 같이 작성할 수 있다. p..
-
3장 템플릿 (1)24년 11월 이전/책장 속 먼지 털기 - 토비의 스프링 2020. 11. 30. 07:06
책장속 먼지털기 스터디 4차 스터디 날짜 : 2020.11.30 작성 날짜 : 2020.11.29 ~ 11.30 페이지 : 209 ~ 240 템플릿이란? 책에서 나온 "템플릿"의 정의는 다음과 같다. 바뀌는 성질이 다른 코드 중에서 변경이 겅의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있는 있도록 하는 방법이다. 쉽게 말하면 변경되지 않는 부분을 남겨두고(템플릿) 변경되는 코드 부분을 독립시키는 것이다. UserDao의 문제점? 지난 장들을 거쳐 관심사를 분리하고 의존성 주입 같은 기술들을 적용했음에도 불구하고 UserDao는 아직 고쳐야할 점이 남아있다. 바로 "예외 처리"이다. public class Use..
-
2장 테스트24년 11월 이전/책장 속 먼지 털기 - 토비의 스프링 2020. 11. 29. 15:23
책장속 먼지털기 스터디 3차 스터디 날짜 : 2020.11.23 (불참) 작성 날짜 : 2020.11.26 - 2020.11.27 페이지 : 145 ~ 207 스프링의 두 번째 가치, 테스트 원래 절로 뺼 필요는 없지만, 주제가 "테스트"인 만큼 책에서 설명하는 가치를 짧게나마 짚고 가는게 좋을 것 같아서 따로 빼두었다. 저자 토비님은 스프링이 개발작에게 제공하는 가장 중요한 가치 2가지를 다음과 같이 뽑았다. 개발자가 IoC/DI를 이용해서 손쉽게 OOP를 적용하게끔 도와주는 것. 테스트 테스트는 만들어진 코드를 확신하게 해주며 변화에 유연하게 대처할 수 있게 해준다. 이제 스프링 프레임워크에서 어떻게 테스트 코드를 적용할 수 있는지 살펴보자. UserDaoTest의 문제점 UserDaoTest의 문제..
-
1장 오브젝트와 의존관계 (2)24년 11월 이전/책장 속 먼지 털기 - 토비의 스프링 2020. 11. 28. 20:54
책장속 먼지털기 스터디 2차 스터디 날짜 : 2020.11.16 (불참) 작성 날짜 : 2020.11.14 ~ 15 페이지 : 102 ~ 143 싱글톤 레지스트리? 우리가 만든 DaoFactory를 직접 사용하는 것과, @Configuration 애노테이션으로 ApplicationContext에 등록해서 사용하는 것에는 어떤 차이가 있을까? 결론부터 말하면 차이는 스프링 빈이냐 아니냐의 차이다. 스프링 빈은 이전에 언급했 듯이, 스프링 IoC 컨테이너가 라이프 사이클을 관리하는 객체들이다. 스프링 빈은 특정 스코프를 가지는데 기본적으로 "싱글톤" 스코프를 가진다. 쉽게 말하면, 애플리케이션에서 딱 1개의 객체만 만들어진다. 이 후 챕터에서 다룰 것이지만 한 발 앞서서 JUnit(나는 JUnit5이다.) ..