Spring Web Layer(Dto?, Dao?)
개발/Spring2022. 3. 28. 13:58Spring Web Layer(Dto?, Dao?)

Web Layer 흔히 사용하는 컨트롤러(@Controller)와 JSP/Freemarket 등의 뷰 템플릿 영역 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 이야기함. Service Layer @Service에 사용되는 서비스 영역임 Service에서 비즈니스 로직을 처리하는 것이 아닌, Service는 트랜잭션, 도메인간 순서 보장의 역할을 수행함 일반적으로 Controller와 Dao(Data Access Object)의 중간 영역에서 사용함 @Transactional이 사용되어야 하는 영역임 Repository Layer Database와 같이 데이터 저장소에 접근하는 여역 기존에 개발하셨던 분들이라면..

테스트코드
개발/Spring2022. 3. 14. 20:00테스트코드

JUnit : 자바의 단위테스트를 위한 프레임워크 1. 테스트를 할 화면 창에 Ctrl + Shift + T 2. 아래 클릭 3. ok 클릭 4. 테스트 코드 생성 확인 5. 테스트 코드 작성 * assertEquals는 왼쪽에 예상되는 아웃풋, 오른쪽에는 내 아웃풋을 넣어줌 6. 함수만 실행 Ctrl + shift + F10 중앙 상단쪽에 Tests Passed를 확인할 수 있음. 7. 일부로 틀리기 ! 느낌표 하나로 테스트가 실패한 것을 볼 수 있음. 8. MockitoExtension 사용하기 package com.fastcampus.programming.dmaker.service; import com.fastcampus.programming.dmaker.code.StatusCode; import ..

[Spring] Null Safety
개발/Spring2022. 2. 8. 22:23[Spring] Null Safety

객체에 Null을 담지 않도록 하자. 담아도 되는데 그 객체는 다시한번 쳐다보자. 제임스 고슬링 아저씨의 10억불짜리 실수인 Null은 항상 체크해야한다. 위 코드에서 만약 request가 null이면 NPE가 뜬다. 1. @NonNull Annotation 이거쓰면 위처럼 if문 걸어서 예외처리 안해도 된다. NonNull Annotation은 3군데 붙을 수 있는데 아래와 같다. 1. 파라미터에 NonNull Annotation을 줬기에 메서드 호출 시점에 Exception이 처리된다. 따라서 아래 if문은 없어도 된다. 2. 프로퍼티에 NonNull이 있다. 이 프로퍼티는 Null이 될 수 없는 프로퍼티가 된 것이다. 3. Method는 NonNull이기에 Null을 리턴할 수 없다. 2. @Nul..

[Spring] SpEL(Spring Expression Language)
개발/Spring2022. 2. 8. 22:10[Spring] SpEL(Spring Expression Language)

필요한 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어 @Value("${config.value}")와 같은 방식으로 설정값을 주입 받는데 활용 1. SpEL의 값 평가(인식) Spel Parser는 ""안에 들어가있는 문자열을 평가(evaluation)해서 결과 값을 만들어 낸다. 문자열 리터럴로 인식되어 concat등 메서드도 가능하다. 위 case처럼 리터럴 값에 접근하는 경우보다는 아래와 같은 경우를 많이 사용할 것 이다. 2. Bean의 Property 설정 기본적으로 #{} 방식으로 property를 설정 ${server.hostname}처럼 $로 시작하는 것은 application.properties 혹은 application.yml의 값을 가져올 때 사용..

개발/Spring2022. 2. 8. 18:07[Spring] Resource

1. Resource 파일이나 설정 값에 접근하기 위한 인터페이스 public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); boolean isFile(); URL getURL() throws IOException; URI getURI() throws IOException; File getFile() throws IOException; ReadableByteChannel readableChannel() throws IOException; long contentLength() throws IOException; long lastModified() throws IOEx..

개발/Spring2022. 2. 8. 17:08[Spring] Validation, Data Binding

1. Validation Validation : 유효성 검증 서버는 http를 통해 요청이 들어올 것인데, 이 요청 중 잘못된 요청이 있는지 Validation해야한다. 검증하지 않은 값에 대해서 Reply를 하거나 이를 바탕으로 DB에 Select을 한다면, 이는 프로그램의 오류나 보안적 결함으로 이어질 가능성이 높다. SQL Inject을 방어하는 것도 하나의 Validation으로 볼 수 있을 것 같다. 크게 Validation 종류는 2가지이다. 데이터 검증 필수 데이터의 존재 유무 문자열의 길이나 숫자형 데이터의 경우 값의 범위 email, 카드번호, 폰번호 등 특정 형식에 맞춘 데이터 비즈니스 검증 서비스 정책에 따라 데이터를 확인하여 검증 ex) 배달서비스에서 배달 기사 호출전에 해당 주문건..

[Spring] AOP
개발/Spring2022. 2. 8. 15:59[Spring] AOP

1. 정의 정의부터 나열한다. 아래에서 최대한 쉽게 풀이해보도록 하겠다. AOP, Aspect Oriented Programming(= 관점 지향 프로그래밍)은 횡단 관심사의 분리를 허용함으로, 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 횡단(흩어진) 관심사(CrossCutting Concern)는 다른 관심사에 영향을 미치는 프로그램의 에스펙트이다. 에스펙트(Aspect)의 사전적의미는 측면, 양상, 관점과 같은 명사이며 Spring에서는 하나의 측면과 같은 부가적인 기능이다. AOP는 횡단 관심사들을 에스펙트로 캡슐화함으로써 모듈화를 갖는 것을 목표로한다. 2. 설명 에서 분리되기 전 Class A, B, C는 다른 부가기능까지 하나의 클래스에서 정의되어 있다. 따라서 주황색 기능에서 ..

[Java] IoC(제어의 역전), DI(의존성 주입)의 친절한 설명
개발/Spring2022. 1. 11. 19:50[Java] IoC(제어의 역전), DI(의존성 주입)의 친절한 설명

1. IntroIoC(Inversion of Control)의 개념을 설명한다.직역하면 IoC는 제어의 역전으로 불리우는데, 글자만 봐서는 도통 감이 오지 않는다.따라서 이를 예제코드와, 그림과 함께 설명하도록 하겠다. IoC를 설명하기 전에 알아야 할 것이 있다.바로 이 것을 왜 사용하는데? 부터 출발을 해야할 것이다.이유는 간단하다 OOP 원칙 중, Loosely coupled 원칙을 지키기 위해서! Loosely coupled는 "느슨한 결합"이다. 객체 지향 프로그래밍의 중요한 원칙 중 하나이다.나사를 덜 조이는 느슨한이 아닌, 상호 연관성이 있는 객체끼리 최대한 분리하겠다. 이 의미이다.자동차를 생각해보라. 예를 들어 타이어와 휠을 분리해놓지 않았다면, 비교적 자주 갈아주는 타이어를 갈 때마다 ..

스프링(Spring)이란?
개발/Spring2022. 1. 11. 18:06스프링(Spring)이란?

1. Intro 봄(Spring)이란 겨울(Winter)이 가고, Java의 봄(Spring)이 왔다는 것을 의미한다. 자바가 매우 어려워 겨울이란 별칭을 가지던 시기는 바로 EJB(Enterprise Java Beans)를 의미한다. 다루기가 까다로워 Java라는 언어 자체를 존폐위기까지 가져갔고, 이러한 EJB를 부수기 위해 탄생한 것이 Spring이다. 자세하게 살펴보기 위하여 Enterprise Java Beans을 먼저 살펴보겠다. EJB를 직역하자면 "기업용 자바 콩"이다. 여기서 "기업용"과 "자바 콩" 두 가지로 분류할 수 있는데, 기업용(Enterprise)이라는 의미를 먼저 살펴보겠다. 현존하는 컴퓨터 메카니즘은 서버 중앙화된 체계를 갖는다. 이 때의 패러다임에 부합하기위해 1998년 ..

image