백엔드62 Validation, Data binding Validation -> 유효성 검증 사용자, 혹은 서버의 요청을 받는 서버에 관련하여 . 잘못된 내용이 있는지 확인한다. 데이터 검증 . 데이터 하나하나를 확인. 필수 데이터의 존재 유무, 문자열 길이, 값의 범위 , email , 신용카드같은 형식에 따른 데이터 비지니스 검증 . 결재 잔액은 충분한가? db의 데이터까지 조회, 검증 . -> 반드시 분리되는 개념이진 않음 . Spring 의 Validation Java Bean Validation -> javabean은 데이터를 쉽게 넣었다 뺴는 단순 구조의 class. 개별 데이터를 검증하기 . name , age , email등의 변수가 있는 user class . public class MemberCreationReqeust { @NotBlank.. 2023. 12. 26. AOP 관점 지향. 특정 함수 호출 전, 후에 공통적인 처리를 위한 것. 특정 타이밍에서만 원하는 작업을 넣어주고 싶을때 사용한다. 즉. 공통적이지만 모든 곳에 공통적이지 않은 logging->특정 부분에 상세 로깅하고 싶을때. Transaction -> 내부적으로 aop 기법을 사용해서 , 시작과 끝 지점 처리. 인증 -> 특정 영역 사용을 위한 인증. 주로 LOGGING(시간재기나 등등)LOCK,인증 등에서 사용한다. AOP사용의 단점? 코드 분석을 어렵게 하는 단점이 있고, 보수적으로 사용하는 것은 어떨까 제안 . Aspect -> 특정 관심사를 모듈화 한것. Advice- > 실제 적용 기능. 로깅, 트랜잭션등의 기능 join point-> 프로젝트의 진행중, AOP를 넣어줄 수 있는 포인트. POINT.. 2023. 12. 25. JAVA- spring, spring boot/ BEAN 객체 지향적 프로그래밍의 장점? -> 비즈니스의 모습을 그대로 표현할 수 있는 장점이 매력적 C++도 마찬가지. JAVA는 JVM(가상머신)위에서 작동하기 때문에, 여러곳에서 즉시 사용될 수 있다. SPRING은 , 주로 JAVA를 생각하지만, 코틀린과 같은 언어로도 개발할 수 있다. 스프링은, 자바가 한글이라고 치면, 책을 구성하는 틀이라고 생각할 수 있으며. 사용하지 못하는 경우도 분명히 존재할 수 있다. 즉 , Frame work이다. 그 중, 동일한 코드를 계속 찍어낼 필요가 있을까? 우리가 제공하면 안될까? -> spring boot. +장점 . 웹 어플리케이션이 내장되어있다 (TomCAT) Spring의 핵심 기술 동작원리를 알아야, 응용이 가능하다. 이 또한 모든 과목과 같다. 1. data.. 2023. 12. 25. 테스트 로그인 회원가입 프로젝트때 test를 하지 않고 만들어서 끝난후 오류 찾으려니 힘들었던걸 기억하자 . 짧은 단위로 테스트를 해주는 것이 굉장히 유리하다. class 들어간 후 -> 우클릭, 생성 . @ExtendWith(MockitoExtension.class) -> servicetest의 시작에 추가되는 어노테이션 @MOCK? 나무위키 출처 모의 객체(Mock Object)란 주로 객체 지향 프로그래밍으로 개발한 프로그램을 테스트할 경우 테스트를 수행할 모듈과 연결되는 외부의 다른 서비스나 모듈들을 실제 사용하는 모듈을 사용하지 않고 실제의 모듈을 "흉내"내는 "가짜" 모듈을 작성하여 테스트의 효용성을 높이는 데 사용하는 객체이다. DB없이 어떻게 DB를 테스트할것이냐에 대한 답의 의미 . mock은 .. 2023. 12. 25. Controller api 구성 요소를 확인한다. server의 요청을 받는다. 어떤 작업을 요청하고 내려줄지 를 구현한다. 즉, api의 요청에 따라 무엇을 할까? 를 의미한다고 이해하였다. 사용자의 입력이 최초로 받아들여지는 위치 . @RestController로 시작 @CROSSORIGIN CORS정책을 우회한다. CORS? 스크립트가 다른 출처(포트,도메인중 하나라도) 다르다면, 리소스 접근을 제한한다. CROSS ORIGIN(origins="httlp://localost:3000" ) 과 같이, 특정 출처에서의 요청을 허용한다. @RequestMapping("/") 기본 url을 설정한다. mapping을 어노테이션을 통해 진행한것. @postmapping 복습) post란, 여러개 자원에 수행되며, data를 u.. 2023. 12. 21. Service 모든 서비스 개발의 핵심. serivce. 여러방식이 있지만 가장 간단명료한 인터페이스 상속 방식을 활용하는 것을 최우선으로 해보겠다. private fianl로, 생성했던 todo repository를 받아서 사용한다. 이전 프로젝트에서는 service 어노테이션 대신 직접 의존성을 주입하였는데, 이번에는 어노테이션을 활용하여 service가 사용할 레퍼지토리가 무엇인지를 명확히 제시 하였다. 해당 메소드가 , service의 주된 사용을 알려주는 예시라고 생각하여 이를 블로그에 올려본다. 가장 먼저 db에 들어갈 entity를 생성한다. id는 자동생성으로 pk로 사용하였기 때문에 따로 set하지 않고, 나머지 칼럼들을 set한다. 그 후 return이 핵심 내용이 되는데, toDoEntity는 ad.. 2023. 12. 21. Repository dbms와 data를 주고 받기 위한 인터페이스를 정의한 부분. 저장소라는 직독 직해, 하지만 실제 데이터 저장 케이스가 아닌, 데이터를 주고받는 인터페이스 이다. entity를 생성하였따면, 이값을 넣거나, 조회하거나 등의 활동을 진행하는 것이 서비스이다. 이를 어떻게 할것인지 정의하는 계층이다. java의 extends(하나은행 코딩테스트 시험에 나왔던걸 기억하자) 를 활용하여 JpaRepository를 상속받아 실행한다. 이전 프로젝트 로그인에서 간단하게 jparepository를 상속받아 사용한 경험을 바탕으로 , 해당 코드를 사용했다. 이와 같이 레퍼지토리 구현자체는 굉장히 쉽고, 이를 왜 사용하는지 학습이 중요한 것 같다. *인터페이스 학습중 질문이 생겼다. 이와 같은 코드에서 , todore.. 2023. 12. 21. 구현 레이어로 분할하는 이유? 레이어에서 EX) 서비스는 서비스만을 한다. 코드를 찾거나, 코드가 꼬이는 위험을 방지한다. 다른 레이어에 영향을 주지 않기 때문에, 수정관리가 용이하다. 1. 모델 개발 도메인의 각각의 오브젝트이다. @data -> lombok에서 제공한다. getter ,setter, 접근자, 생성자등이 자동으로 생성된다. @entity -> entity로 사용함을 의미 . entity, table 다 약간의 차이가 있지만 크게는 table로 인식하자. @NoArgsConstructor 명시 선언된 생성자 없이 생성된다. public class Person { private String name; private int age; public Person(){} } @AllArgsConstruc.. 2023. 12. 20. java version 안맞을때 수많은 자바 버전을 쓰다보면 버전이 안맞아서 JNI ERROR가 뜨는 경우가 존재한다. 1. 설정 - GRADLE 버전과 + 프로젝트 structure+ 2. 프로젝트의 SDK 의 버전이 모두 맞아야 프로젝트가 정상 작동한다. 3. SPRING.IO로 받은 경우에는, 해당 버전과도 일치해야 한다. 2023. 12. 20. 인텔리제이 사용 spring.io에서 이미 외부 라이브러리가 다 완료된 형태로 다운받아 사용할 수 있다. 그러나 사용중에 의존성을 추가해야할 경우도 분명히 생길것인데, 이때는 maven repository에서 gradle 혹은 사용하는 툴에 따라 의존성 코드를 확인하고, gradle을 다시연결하여 reload(자동으로 되는 것 같다) 하여 외부 라이브러리를 사용할 수 있다! 시간이 소요되는 작업이다. 급하게 하지 말고 의존성 주입하고 나서 기다리자. lombok같은 경우, 플러그인을 설치하고, 이를 설정에서 다시 사용까지 1. plugin - > lombok 설치 2. 실행, 배포 에서 어노테이션프로세서에서 이를 실행하는 방식으로 진행 후 사용한다. 2023. 12. 20. 이전 1 ··· 3 4 5 6 7 다음