Home

Bean Validation으로 검증하기

Bean Validation일반적인 유효성 검사 로직지켜져야 할 조건에 맞지 않은 상황에 로직을 진행하려는 경우 예외를 터트려서 의도하지 않은 진행을 막을 수 있다. 1234567891011public class Name { private final String name; public Name(String name) {

Spring IoC 컨테이너, 컴포넌트 스캔, 빈 생명주기

요약 (다음 질문의 정답을 안다면 이 포스트를 읽지 않아도 된다.) IoC 컨테이너와 ApplicationContext는 완전히 같은 개념인가? IoC 컨테이너를 구성하는 방법은 어떤 것이 있는가? BeanFactory와 ApplicationContext의 차이를 알고 있는가? IoC 컨테이너스프링의 IoC 컨테이너는 객체를 인스턴스화하고 구성 및

왜 스프링을 쓰는 걸까??(IoC, DI)

요약 의존 역전과 유연함을 위해서 DI하도록 객체를 설계하는 경우,매번 해당 객체를 사용할 때마다 필요한 객체를 찾아서 주입해줘야 한다.스프링 프레임워크는 DI를 대신해주는 역할을 한다. 유연한 설계를 위해서객체지향 설계 원칙 중 SOLID 원칙이 있다.그 중 D에 해당하는 의존 역전 원칙은 상위 모듈이 하위 모듈의 구현에 의존하지 말고, 상위 모듈이

불필요한 객체 생성을 피해라

요약 변경되지 않는 객체를 사용할 때마다 새로운 객체를 만들지 말자. 불필요한 객체 생성을 하는 예시String12String bad = new String("bikini"); //안좋은 예시String good = "bikini"; //무난한 예시 new String(“bikini”)로 문자열을 만드는 경우 불필요

조합으로 체스 말 이동 범위 검사하기!

요약 체스 말 객체들이 해당 위치로 이동할 수 있는지 검증하는 로직이 중복된 경우가 있었다.이를 따로 분리해서 중복을 제거하고자 했다. 도입 배경체스 말 종류 구현하기체스 말 객체(Piece)는 자신의 위치와 이동할 위치를 전달받아서 이동할 위치로 이동할 수 있는지 확인한다. 123456789101112131415161718192021public abs

Java의 Call by Value

요약 자바에는 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