본문 바로가기

전체 글72

[TIL] #38. Validation [ Validation ] : HTTP 요청이 정상인지 검증Front 검증- 유저가 조작할 수 있기 때문에 보안에 취약- 그럼에도 필요하다 Server 검증- front 없이 서버에서만 검증 = 유저 사용성이 떨어짐.- API Spec을 정의해서 validation 오류를 response 예시에 남겨줘야 한다.- 서버 검증은 필수 Database 검증- Default, Not Null ,,,   [ BindingResult ] : validation 오류를 보관하는 객체  @ModelAttribute를 이용해 매개변수를 바인딩할 때 발생한 오류를 보관하는 객체이다. - BindingResult 파라미터는 @ModelAttribute 파라미터 뒤에 와야 한다.    [ Bean Validation .. 2024. 6. 18.
[TIL] #37. MockMvc [ MockMvc ] : 실제 객체와 비슷하지만 테스트에 필요한 기능만 가지는 가짜 객체를 만들어서 애플리케이션 서버에 배포하지 않고도 스프링 MVC 동작을 재현할 수 있는 클래스 JUnit 5: 단위테스트 프레임워크JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage  - JUnit Platform : 테스트를 시작하기 위한 런처 제공  - JUnit Jupiter : 테스트 작성을 위한 새로운 프로그래밍 모델과 확장 모델 조합  - JUnit Vintage : Junit 4와 Junit3가 잘 동작하도록 지원// build.gradledependencies { // JUnit5 testImplementation("org.springframewo.. 2024. 6. 18.
[TIL] #36. AOP [ Spring AOP ] AOP (Aspect Oriented Programming): 관점 지향 프로그래밍: 어떤 로직을 핵심적인 관점/부가적인 관점으로 나누어서 보고, 그 관점을 기준으로 각각 모듈화하는 것    (모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것) 주요 개념Aspect : JointPoint + Advice -> 객체. 흩어진 관심사를 모듈화 한 것 (주로 부가기능을 모듈화 한다)Target : Aspect를 적용하는 곳Advice : 실질적으로 어떤 일을 해야할 지에 대한 것. 실질적인 부가기능을 담은 구현체JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용.. 2024. 6. 13.
[TIL] #35. Test Code - 단위테스트 [ 단위테스트 ] : 작은 단위로 잘게 쪼개서 해당 단위가 잘 작동하는지를 검사Junit 5 : 자바용 단위 테스트 프레임워크 Before - Afterpublic class BeforeAfterTest { @BeforeEach void setUp() { System.out.println("각각의 테스트 코드가 실행되기 전에 수행"); } @AfterEach void tearDown() { System.out.println("각각의 테스트 코드가 실행된 후에 수행\n"); } @BeforeAll static void beforeAll() { System.out.println("모든 테스트 코드가 실행되기 전에 최초로 수행\n.. 2024. 6. 12.
[TIL] #34. Web Application, Servlet [ Web ] : HTTP 기반으로 동작 Web Server: HTTP 기반으로 동작하는 서버로, 정적 리소스를 제공  ex) NGINX, Apache WAS (Web Application Server): HTTP 기반으로 동작 + 웹 서버의 기능  ex) Tomcat, Jetty, Undertow 웹 시스템 구성WAS와 DB만으로 서버를 구성하면  - WAS가 너무 많은 역할을 담당 (서버 과부하)  - 실행에 가장 중요한 로직인 Application 로직이 정적 리소스로 인해 실행되지 않음  - WAS에 장애가 생기면 오류 페이지가 없어서 아무 화면도 보여주지 않음 웹 구성의 장점1. 효율적인 리소스 관리2. 오류화면 제공  [ Servlet ] : HTTP 프로토콜 기반 요청 및 응답을 처리하는데 .. 2024. 6. 10.
[TIL] #33. ResponseEntity [ ResponseEntity란 ] HttpEntity를 상속받아 구현한 클래스이다. HttpEntity : HTTP 요청 혹은 응답에 해당하는 HttpHeader, HttpBody를 포함하는 클래스이다.ResponseEntity : 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다.  => HttpStatus, HttpHeaders, HttpBody를 포함한다.   [ ResponseEntity를 쓰는 이유 ] 서버 간의 통신에 필요한 정보를 제공할 수 있는 방법이다.적절한 상태 코드와 응답 헤더 및 응답 본문을 생성해서 클라이언트에 전달할 수 있다.    [ ResponseEntity를 잘 쓰는 법 ] 1. return : new 보다 builder패턴 사용하기// 생성자 패턴r.. 2024. 6. 10.