본문 바로가기

반응형

Programming

(163)
[Lombok] 생성자를 만드는데 사용되는 Lombok 어노테이션 @NoArgsConstructor No Argument Constructor, 파라미터가 없는 생성자를 만든다.('인수'라고 해야할지, '파라미터'라고 해야할지..) 만약 필드가 final로 설정되어 있는 경우 컴파일러 에러가 발생한다. 필드가 final로 설정되어 있는 경우@NoArgsConstructor(force = true)옵션을 사용하면 final 필드를 0,false,null 등으로 강제 초기화를 하여 생성자를 만들 수 있다. @NoArgsConstructor public class Employee { private String name; private int salary; } public class Employee { private String name; private int salary; ..
[Spring Boot] @RequiredArgsConstructor 사용 시 final 키워드 사용하지 않아서 에러가 발생한 것 같은데.. 게시판 구현 연습 중 다음과 같은 에러와 마주했다. java.lang.NullPointerException: Cannot invoke "com.changon.springboot.domain.posts.PostsRepository.findAllDesc()" because "this.postsRepository" is null at com.changon.springboot.service.posts.PostsService.findAllDesc(PostsService.java:46) ~[classes/:na] at com.changon.springboot.web.IndexController.index(IndexController.java:17) ~[classes/:na] findAllDesc() 메소드는 게시판..
[Spring] @PathVariable, @RequestParam, @RequestBody, @ResponseBody @PathVariable URI 경로의 일부를 파라미터로 사용할 때 이용(URI 경로에서 값을 가져온다) 템플릿 변수의 값을 추출하고 그 값을 메소드 변수에 할당하는데 사용된다. @RequestMapping("/users/{userid}", method=RequestMethod.GET) public String getUser(@PathVariable String userId) { // implementation omitted... } 요청 결과 localhost:8080/users/charlie 와 같은 URI가 넘어왔다고 하자. 'charlie'는 URI 템플릿 변수의 값으로, getUser 메소드 매개변수 userId의 요청 값으로 바인딩된다. @RequestMapping("/owners/{owner..
[LeetCode] Length of Last Word | 난이도: Easy 문제 Given a string s consisting of some words separated by some number of spaces, return the length of the last word in the string. A word is a maximal substring consisting of non-space characters only. 예시 Example 1: Input: s = "Hello World" Output: 5 Explanation: The words are "Hello" and "World", both of length 5. Example 2: Input: s = " fly me to the moon " Output: 4 Explanation: The longest w..
[Spring] Spring 웹 계층 Web Layer 웹 어플리케이션의 최상위에 있다. Controller, JSP/Freemaker 등의 뷰 템플릿 영역이다. 사용자의 요청(input)을 받고 요청에 따른 정확한 응답(output)을 전달한다. 외부 요청을 처리하고, 올바른 응답을 사용자에게 반환하는 것에 대한 전반적인 영역을 말한다. Web Layer는 웹 어플리케이션의 최전방에 있기 때문에 다른 레이어에서 발생한 예외 처리, 인증 관리 및 권한 없는 사용자 인가 거부 등을 통해 해당 웹 어플리케이션에 대한 보안 위협을 방지할 수 있다. Service Layer @Service, @Transactional에 사용되는 서비스 영역. 트랜잭션과 도메인 간의 순서만 보장하는 역할 수행. 트랜잭션에 대한 경계(구분선) 역할을 하고 어플리케이션..
[Spring Boot] IntelliJ에서 lombok 사용하고 테스트 해보기 개발환경 IntelliJ Java8(JDK 1.8) Spring Boot 2.4.1 Gradle 7.1 build.gradle의 dependencies에 lombok 어노테이션 추가 compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20' IntelliJ 버전 2020.03 버전 이하 환경에서 lombok 사용 시 어노테이션 추가 + lombok 플러그인 설치 이렇게 두 가지 작업을 해야 한다. 2020.03 버전 이하 환경에서 작업한다면 아래 이미지를 보고 lombok 플러드인을 설치하자. DTO 클래스 생성 HelloControllerDto.java import lombok.Getter; import lombok.Requir..
[LeetCode] Maximum Subarray | 난이도: Easy 문제 Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. A subarray is a contiguous part of an array. 주어진 배열의 부분 배열(subarray)의 합 중 최대값을 구하시오. 부분 매열은 연속적인(contiguous) 배열이어야 한다. [1,2,3,4] 배열을 예시로 들자면, [1,2]는 부분배열로 가능하지만, [1,3]또는 [1,4]와 같이 연속적이지 않고 서로 떨어져 있는 값들은 조건에 어긋난다. 예시 Example 1: Input: nums = [-2,1,-3,4,-1,2,1..
[Spring Boot] JUnit5로 Controller 테스트 코드 작성하기 개발환경 IntelliJ Java8(JDK 1.8) Spring Boot 2.4.1 Gradle 7.1 자신이 작성한 Controller의 메소드가 제대로 작동이 되는지 간편하게 테스트 해보자. test 디렉토리에 main 디렉토리와 동일한 패키지를 생성하여 테스트 컨트롤러 클래스를 생성한다. 본인은 HelloController를 생성했기에 HelloControllerTest 클래스를 생성했다. HelloController.java 클래스에 hello() 메소드가 정의되어 있다. HelloControllerTest.java hello() 메소드를 테스트하기 위한 테스트 코드 참고로 테스트 클래스의 테스팅 라이브러리는 JUnit5를 사용한다. 따라서 JUnit5 기준으로 코드가 작성되었다. JUnit4와는..

반응형