본문 바로가기
반응형

분류 전체보기96

[자바] Stream .sorted() 활용 자바 Stream 에서는 sorted() 함수를 제공한다. 예제 예시를 통해 알아보자. 검색한 키워드와 키워드별 횟수를 나타내는 객체이다. stats 리스트 객체에는 총 5개의 객체가 담겨있다. 이 리스트 객체를 활용해서 sorted() 함수에 사용해보자. @Getter public class BlogStatisticDto { private final String keyword; private final String count; @Builder public BlogStatisticDto(String keyword, String count) { this.keyword = keyword; this.count = count; } } public static void main(String[] args) { Li.. 2023. 2. 6.
[스프링] REST Docs, asciidoctor 로 API 문서 관리하기 테스트 대상 Controller @RestController public class BlogSearchController { private final SearchBlogUseCase searchBlogUseCase; public BlogSearchController(SearchBlogUseCase searchBlogUseCase) { this.searchBlogUseCase = searchBlogUseCase; } @GetMapping("/api/v1/blogs") public ResultResponse searchBlogs( @Valid SearchBlogRequestBody requestBody, @RequestParam(required = false, defaultValue = "1") int pa.. 2023. 2. 6.
[스프링] JPA 관련 통합 테스트 환경 구축하기 통합 테스트 환경을 구축하는 법을 알아보자. 테스트 대상 통합 테스트 환경을 구축하면서 테스트를 해볼 대상은 영속성 (Persistence) 관련 클래스들이다. JPA 를 사용해서 데이터에 대한 생성, 조회, 수정, 삭제, 즉 CRUD 기능을 테스트해보려고 합니다. 테스트를 위한 DB 는 h2 를 사용합니다. 예시에서 사용될 테스트 대상으로 JpaRepository 를 상속받는 BlogStatisticJpaRepository public interface BlogStatisticJpaRepository extends JpaRepository, BlogStatisticCustomRepository { } 의존성 설정 아래 의존성을 build.gradle 파일에 적용한다. // build.gradle.kts.. 2023. 2. 6.
[스프링] JUnit5, AssertJ, Mockito 기반 테스트 환경 구축하기 JUnit5, AssertJ, Mockito 를 활용해서 스프링 부트에서 테스트 환경을 구축해보자 의존성 추가 아래를 참고하여 의존성을 추가한다. 각 의존성에 대한 버전은 최신 버전으로 추가해주면 될 듯하다. dependencies { // JUnit 라이브러리 testImplementation("org.junit.jupiter:junit-jupiter-api") testImplementation("org.junit.jupiter:junit-jupiter-params") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") // 테스트 코드의 가독성을 높여주는 메소드를 위한 라이브러리 testImplementation("org.assertj:assertj.. 2023. 2. 6.
[자바] String 과 new String(); 의 차이 개발을 하다 문득 String 과 new String() 의 차이가 무엇일지 궁금해져서 정리해보고자 한다. String String a = "abcd"; String b = "abcd"; 위와 같은 경우에는 heap 내 String constant pool 에 객체를 저장한다. 만약 이미 존재하는 문자열이라면 그 저장된 객체를 가르키게 되어 있다. 따라서 변수 a 는 String constant pool 에 새로운 객체로 생성되고, 변수 b 는 동일한 abcd 값이 저장되어 있기 때문에 변수 a 의 참조값을 가르키게 된다. // a 와 b 는 서로 동일한 주소값을 참조하고 있으므로 a == b 는 true if (a == b) { // true ... } // a 와 b 는 서로 동일한 값을 가지고 있으.. 2023. 2. 3.
[스프링] 스프링에서 관리하는 자바 객체, 빈 (Bean) 빈 (Bean) 이란? 스프링 IoC 컨테이너가 관리하는 자바 객체를 의미한다. 자바 객체 일반적인 자바 객체는 아래와 같이 클래스를 선언하여 사용한다. public class Car { private final String name; public Car(String name) { this.name = name; } public void turnLeft() {...} } public class MainApplication { public static void main(String[] args) { Car car = new Car("KIA K3"); // 객체 선언 car.turnLeft(); // 메소드 호출 } } 위와 같은 일반 Car 자바 객체를 빈으로 등록하기 위해서는 어떻게 해야 할까? 빈으로 .. 2023. 2. 3.
Could not open JPA EntityManager for transaction 에러 메시지 백엔드 서버를 운영하다가 아래와 같은 애러가 빈번하게 발생했다. 발생하는 원인과 해결책에 대해서 정리해보고자 한다. Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection 데이터베이스 커넥션 에러를 이해하기 위해서는 먼저 데이터베이스 커넥션 풀에 대해서 알아야 한다. 어플리케이션(App.)은 데이터베이스(DB)에서 데이터를 조회하려면 App. 이 DB 와 커넥션을 맺어야 한다. 커넥션을 맺는다 라는 의미는 App. 에서 DB 로 접근한다는 의미이며 서로 연결된다 라는 의미가 있.. 2023. 2. 3.
JSON parse error; Cannot construct instance of ... 에러 상황 API 를 개발할 때 JSON 데이터를 RequestBody 로 주로 받게 된다. RequestBody 에 해당하는 DTO 를 만들어두고 아래처럼 요청을 받는다. @PostMapping("/api/v1/user") public ResultResponse createUser( @RequestBody CreateUserRequestBody ) { ... } public class CreateUserRequestBody { private final String userName; private final String mobile; private final String email; ... public CreateUserRequestBody( String userName, String mobile, St.. 2023. 2. 3.
반응형