Bean Validation으로 검증하기
Bean Validation일반적인 유효성 검사 로직지켜져야 할 조건에 맞지 않은 상황에 로직을 진행하려는 경우 예외를 터트려서 의도하지 않은 진행을 막을 수 있다. 1234567891011public class Name { private final String name; public Name(String name) {
Bean Validation일반적인 유효성 검사 로직지켜져야 할 조건에 맞지 않은 상황에 로직을 진행하려는 경우 예외를 터트려서 의도하지 않은 진행을 막을 수 있다. 1234567891011public class Name { private final String name; public Name(String name) {
요약 (다음 질문의 정답을 안다면 이 포스트를 읽지 않아도 된다.) IoC 컨테이너와 ApplicationContext는 완전히 같은 개념인가? IoC 컨테이너를 구성하는 방법은 어떤 것이 있는가? BeanFactory와 ApplicationContext의 차이를 알고 있는가? IoC 컨테이너스프링의 IoC 컨테이너는 객체를 인스턴스화하고 구성 및
요약 의존 역전과 유연함을 위해서 DI하도록 객체를 설계하는 경우,매번 해당 객체를 사용할 때마다 필요한 객체를 찾아서 주입해줘야 한다.스프링 프레임워크는 DI를 대신해주는 역할을 한다. 유연한 설계를 위해서객체지향 설계 원칙 중 SOLID 원칙이 있다.그 중 D에 해당하는 의존 역전 원칙은 상위 모듈이 하위 모듈의 구현에 의존하지 말고, 상위 모듈이
요약 변경되지 않는 객체를 사용할 때마다 새로운 객체를 만들지 말자. 불필요한 객체 생성을 하는 예시String12String bad = new String("bikini"); //안좋은 예시String good = "bikini"; //무난한 예시 new String(“bikini”)로 문자열을 만드는 경우 불필요
요약 체스 말 객체들이 해당 위치로 이동할 수 있는지 검증하는 로직이 중복된 경우가 있었다.이를 따로 분리해서 중복을 제거하고자 했다. 도입 배경체스 말 종류 구현하기체스 말 객체(Piece)는 자신의 위치와 이동할 위치를 전달받아서 이동할 위치로 이동할 수 있는지 확인한다. 123456789101112131415161718192021public abs
요약 자바에는 Call by Value만 존재한다.Call by Value는 함수의 인자에 값을 전달하는 방식이고,Call by Reference는 함수의 인자에 주소를 전달하는 방식이다. Call by Value vs Call by Reference프로그래밍 언어에서 함수에 인자로 전달하는 방식에 따라 나뉜다. Call by ValueCall by V
상속의 위험성상속은 중복코드를 없애고 코드 재사용을 하기 위해 등장한 개념이다.내가 필요로 하는 클래스와 매우 유사한 클래스가 있다면 해당 클래스를 상속하면 같은 코드를 여러번 쓸 필요가 줄어든다. 상속은 코드 재사용을 위해 캡슐화를 희생시킨다. 부모 클래스의 코드를 재활용하기 위해 자식 클래스도 재활용할 코드를 모두 공개되기 때문이다. 경고 1. 자식
함수는 한 가지만 해라!함수에 적힌 코드들의 추상화 수준이 같은 단계로 통일시켜라는 의미다.혹은 함수 내에서 의미있는 이름으로 다른 함수를 추출할 수 있으면 그 함수는 여러 작업을 하는 셈이다. 12345678910111213public Lotto createLotto(List<String> tokens) { List<Inte
의도를 분명히 밝혀라 변수(혹은 함수나 클래스)의 존재 이유가 무엇인가? 어떤 일을 수행하는가? 어떻게 사용하는가? 이름으로 위 세가지가 표현이 안된다면 문제가 있다. 변수의 이름은 범위 크기에 비례해야 한다.123456int pricePerLotto = 1000;int Prizesum = 0;for (Lotto lotto : lottos) {
요약 클래스가 내부에 특정 자원에 의존하고, 그 클래스의 행동이 특정 자원에 따라 영향을 많이 받으면, 싱글톤과 정적 유틸리티 클래스로 구현하면 안된다.이런 영향력이 있는 자원을 클래스 내부에서 만들면 안된다.대신 이 자원(혹은 자원을 만드는 팩토리)을 해당 클래스를 인스턴스화 할 때 넘겨주자. 자원을 직접 명시하는 잘못된 예시 - 정적 유틸리티 &am
데이터베이스 인덱스데이터베이스도 컴퓨터의 하드 디스크(HDD, SSD)에 데이터를 쓰거나 적는다. 랜덤 IO와 순차 IO하드 디스크 드라이브에 접근하려면 플래터를 돌려서 데이터가 저장된 위치로 헤더를 이동시켜서 데이터를 읽는다. 랜덤 IO는 읽어야 할 데이터의 위치가
문제 상황기리기리 프로젝트에서 기자재 대여 반납 기능을 중점적으로 개발하다가 광운대학교 미디어커뮤니케이션 랩실에서는 기자재 뿐만 아니라 랩실도 대여 반납을 할 수 있어야 한다는 피드백을 받았다. 문제는 랩실과 기자재 로직이 상당 부분 비슷하지만 랩실의 대여 로직이 기자
문제 상황기리기리 서비스는 대여 서비스라서 대여 기간과 실제 대여 수령 날짜, 대여 반납 날짜가 중요하다. 문제는 서버 시간대 설정에 따라 실제로 의도한 시간이 맞지 않을 수 있게 된다는 점이다. 그래서 서버를 한국 시간대로 모두 설정해주는 일이 필요하다. 이런 문제는
문제 상황광운대학교 미디어커뮤니케이션 학부 기자재 대여 웹 서비스를 구현할 때 광운대학교 미디어커뮤니케이션 학생만 사용할 수 있도록 해야한다. 하지만 문제는 광운대학교에서는 Open API를 제공하지 않아서 학생 구성원을 어떻게 확인해야 할 지가 큰 문제였다. 개선 방
요약Rest API의 HATEOAS 원칙을 적용하면 페이징 방식에 의존하지 않는 API를 구현할 수 있다. 첫 페이지에 접근할 수 있는 API만 프론트엔드에게 알려주고 다른 페이지에 접근하는 API는 첫 페이지에 접근하는 API의 응답 데이터에 동적으로 담겨있게 하자.
Software Engineering?개발 운용 유지보수 등 생명 주기 전반을 체계적, 서술적, 정량적으로 다루는 학문 SLDC요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수 하는 과정 요구사항 분석요구사항 유도 : 대화를 통해 요구