분류 전체보기(313)
-
(3) 1부 화폐 예제 - 3~6장 동질화, 리팩토링
Github 코드보기 3장 모두를 위한 평등 객체 클래스의 equals 메서드는 Junit의 assertEquals와 동질성을 가집니다. - 객체의 반환값으로 동질성을 비교하지 않으면 테스트는 틀립니다. 4장 프라이버시 객체 인스턴스 필드를 사용하는 코드를 줄이면 필드를 private으로 변경할 수 있습니다. 5장 솔직히 말하자면 큰 테스트를 실행하기 전에 작은 테스트를 공략합니다. 테스트 작성단계 1) 테스트 작성. 2) 컴파일되게 하기. 3) 실패하는지 확인하기 위해 실행. 4) 실행하게 만듦. 5) 중복 제거. 4단계까진 속도가 중요하기 때문에 초록 막대를 만들기 위해 훌륭한 설계의 교리(리팩토링)을 어겨도 됩니다. 하지만 5단계 없인 완성된 테스트 코드가 아닙니다. - 중복이 사라지기 전에는 집에..
2021.03.29 -
(4) 2장_스프링 코어(DI, AOP) - Resource 추상화, Message 관리
2장의 마지막 개념 Resource 추상화와 Message 관리입니다. 제 생각엔 중심 개념은 아니지만 사용하면 편리한 라이브러리여서 알아두면 좋을 것 같습니다. Resource 추상화 애플리케이션을 개발할 때 디렉터리나 war 파일, jar 파일 등 이러한 리소스의 위치를 모두 알고 접근해야 하지만 리소스 추상화 기능을 활용하면 구체적인 위치 정보를 직접 다루지 않아도 리소스에 접근할 수 있게 됩니다. classpath를 관리합니다. Resource 인터페이스의 구현 클래스(UrlResource)를 통해 웹 리소스 가져오기 1 2 3 4 5 6 7 8 public void accessResource() throws IOException { Resource greetingResource = new Url..
2021.03.25 -
1-3. 회원가입 - 비밀번호 암호화(Jasypt Encryption)
프로젝트를 배포까지 성공시켰지만 코드 리뷰가 필요한 부분들이 남아있습니다. 이력서와 포트폴리오를 작성하면서 코드 수정도 하고 있습니다. 프로젝트를 하면서, 필요한 기능들을 빨리 찾아 적용시키고 후속 공부를 하지 않았습니다. 시간을 단축시키려구요. 그런데 기업에서 원하는 개발자 상은 문제가 생겼을 때 해당 라이브러리나 API를 깊게 공부해 내 지식으로 습득할 수 있는 사람인 것 같습니다. '학습'을 해야할 것 같습니다. 그렇다고 입사지원을 늦추거나 하진 않을 겁니다. 계속 이력서도 보완하고 학습하면서 꾸준히 문을 두드려보겠습니다. 회원가입 비밀번호 암호화 기능 : 회원가입 시 입력한 비밀번호를 암호화해 DB 저장합니다. 반대로 DB 저장된 비밀번호를 로그인 시 입력한 비밀번호와 비교해 처리해줍니다. Jas..
2021.03.24 -
(2) 1부 화폐 예제 - 1,2장 Money 객체
Github 코드보기 1장 다중 통화를 지원하는 Money 객체 테스트 코드 작성순서 - 애플리케이션 기능들에 진행해야할 테스트 목록을 만듭니다. - 객체보다 테스트를 먼저 만들어야 합니다. 의존성과 중복 스티브 프리만은 테스트 코드의 문제가 의존성이라 했습니다. 의존성은 코드나 테스트 중 한쪽을 수정하면 다른 한쪽도 수정해야 하는 것을 말합니다. 중복은 문제의 징후이며 해결하려면 객체를 이용하는 것이 좋습니다. 중복을 해결하면 의존성도 제거됩니다. one and only one 코드 수정을 통해 다음 테스트도 통과되게 만드는 가능성을 최대화 하는 것입니다. 스텁 구현 메서드의 서명부와 반환 명령만 적는 식으로 해서 호출하는 테스트 코드가 컴파일 될 수 있도록 껍데기만 만들어두는 것을 뜻합니다. 2장 타..
2021.03.23 -
(3) 2장_스프링 코어(DI, AOP) - AOP, SpEL
AOP(관점 지향 프로그래밍) 비즈니스 로직과 관련 없지만 여러 모듈에 걸쳐 공통적이고 반복적으로 처리가 필요한 내용을 횡단 관심사(Cross-Cutting Concern)이라고 합니다. 이를 DRY(Do not Repeat Yourself)대로 분리해서 한 곳으로 모으는 방법을 관점 지향 프로그래밍(AOP)라고 합니다. 예시로 보안, 로깅, 트랜잭션 관리, 모니터링, 캐시처리, 예외처리가 있습니다. AOP 용어 - Aspect : AOP 단위가 되는 횡단 관심사(ex.로그를 출력한다, 예외를 처리한다...등) - Join Point : 횡단 관심사가 실행될 지점이나 시점(정상 종료나 예외 발생)을 말한다. - Advice : 실행되는 코드; 횡단 관심사를 실제로 구현해서 처리하는 부분(Around, B..
2021.03.22 -
(1) Exception Handling
예외 처리(Exception Handling)은 Controller에서 바로 처리(handling)하지 않는 것이 좋습니다. 중복이 발생해 클린하지 않은 코드가 되기 때문입니다. 횡단 관심사(Aspect)로 두어 한 곳에서 처리하는 것이 바람직합니다. 처리할 수 있는 방법은 3가지가 있습니다. - Http Status Return 방법 : 예외 클래스를 만들어 @ResponseStatus 어노테이션을 클래스에 부여합니다. Controller 클래스에서 예외가 발생할 것 같은 지점에 해당 클래스 객체를 사용합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //Exception @ResponseStatus(value=HttpStatus.NOT_FOUND, reason="No..
2021.03.22