본문 바로가기
반응형

Spring/토비의 스프링 3.17

토비의 스프링 chap 5 - 서비스 추상화 JdbcTemplate update 테스트 JdbcTemplate 으로 update() 메서드를 테스트 할 경우 수정하지 않아야 할 로우를 수정했는지에 대한 테스트도 하는것이 좋다. 해결 방법은 JdbcTemplate 의 update() 가 돌려주는 리턴 값이 수정된 로우의 개수이기 때문에 이것으로 판단할 수 있다. 다른 방법으로는 테스트를 보강해서 원하는 사용자 외에 정보는 변경되지 않음을 직접 확인하는 방법이 있다. 객체지향 적인 코드 Level 에 대한 부분을 Enum 으로 만들었는데, 정작 코드는 아래와 같이 사용한다. public void upgradeLevel(User user) { if (user.getLevel() == Level.BASIC) { user.setLevel(Level.SILV.. 2022. 7. 1.
토비의 스프링 chap 4 - 예외 예외 처리 방법 예외 복구 : 예외상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 것 예외 회피 : 예외처리를 자신이 담당하지 않고 자신을 호출한 쪽으로 던져버리는 것 (throws) 예외 전환 : 발생한 예외를 그대로 던지는게 아니라 적절한 예외로 변환해서 던진다. 예외 전환의 목적 의미를 분명하게 해줄 수 있는 예외로 바꿔주기 위함 예외를 처리하기 쉽고 단순하게 만들기 위해 포장하는 것 (주로 체크 예외를 언체크 예외로 바꾸는 경우) SQLException JdbcTemplate 으로 전환하면서 throws SQLException 이 사라졌는데, JdbcTemplate 의 내부 코드를 보면 템플릿과 콜백에서 발생하는 모든 SQLException 을 런타임 예외인 DataAccessExceptio.. 2022. 6. 30.
토비의 스프링 chap 3 - 템플릿 실습 코드 GitHub - gbeea1004/toby-spring at chap3 에서 실습을 진행할 수 있다. 템플릿 메서드 패턴 템플릿 메서드 패턴은 상속을 통해 기능을 확장해서 변하지 않는 부분은 부모 클래스에 두고 변하는 부분은 자식 클래스에서 재정의 해서 사용하는 패턴이다. 이를 적용하여 OCP 를 만족하는 구조로 개선을 할 수 있는데, 몇가지 단점이 존재한다. 로직마다 상속을 통해서 새로운 클래스를 만들어야 한다. 확장구조가 이미 클래스를 설계하는 시점에서 고정되어 버린다. (유연성이 떨어진다.) 전략 패턴 OCP 를 잘 지키는 구조이면서 템플릿 메서드 패턴보다 유연하고 확장성이 뛰어난 방법이 전략 패턴이다. 변하는 부분을 별도의 클래스로 만들어 추상화된 인터페이스를 통해 위임하는 방법이다. .. 2022. 6. 2.
토비의 스프링 3.1 - 2장 토비의 스프링 chap 2 - 테스트 단위 테스트 (Unit Test) 작은 단위의 코드에 대해 테스트를 수행하는 것. 일반적으로 단위는 작을수록 좋다. 단위 테스트를 하는 이유는 개발자가 설계하고 만든 코드가 원래 의도한 대로 동작하는지를 개발자 스스로 빠르게 확인받기 위해서다. 통합 테스트 (Integration Test) 통합 테스트는 단위 테스트보다 더 큰 동작을 달성하기 위해 여러 모듈들을 모아 이들이 의도대로 협력하는지 확인하는 테스트다. 각 단위들이 유기적으로 잘 동작하는지를 검증한다. 통합 테스트는 단위 테스트와 다르게 개발자가 변경할 수 없는 부분(ex 외부 라이브러리) 까지 묶어 검증할 때 사용한다. @SpringBootTest 어노테이션을 붙여 통합 테스트를 수행할 수 있다. 장점 단.. 2022. 5. 30.
토비의 스프링 3.1 - 1장 토비의 스프링 chap 1 이전에 토비의 스프링 1권을 읽다가 바쁘다는 핑계로 미뤄두었었는데, 한번쯤 정독해볼 시기인 듯 하여 다시 읽어보기로 하였다. 책은 Spring 으로 프로젝트를 구성했지만, 필자는 SpringBoot 를 사용하기로 하였다. DB 데이터베이스는 학습 목적이기 때문에 간단하게 H2 를 사용했다. H2 Database Engine 실습 코드 코드는 GitHub - gbeea1004/toby-spring: 토비의 스프링 실습 깃허브에 올려두었다. chap 별로 브랜치로 나눠두어서 실습하고자 하는 브랜치에서 진행하면 된다. UserDao p.56 에서 UserDao 를 만들어서 '회원가입'과 '회원조회' 기능을 만든다. 여기 코드에서 문제가 있는데, Conne.. 2022. 5. 25.
토비의 스프링 - 1장 (p.1 ~ 87) 학원에서는 스프링 부트로 처음 스프링을 접했는데, 취직을 하고 지금 진행하는 프로젝트에서는 스프링 3.0으로 업무를 보는것이 아닌가.. 스프링의 개념을 다잡기 위해서 스프링의 명서인 토비의 스프링을 공부하게 되었다. 스프링 삽질의 시작 스프링 부트 와 가장 체감이 되는 부분은 Gradle 설정 부분이었다. 스프링 부트는 spring-boot-starter 를 통해서 연관된 의존성을 자동으로 땡겨올 수 있는데 스프링은 일일히 필요한 의존들을 심어줘야한다는 점이 정말 불편했다. DB는 H2 를 사용했는데, 처음에는 다음과 같이 url 경로를 설정하니까 에러가 발생했다. jdbc:h2:~/study Exception in thread "main" org.h2.jdbc.JdbcSQLException: Datab.. 2020. 6. 22.