728x90 Spring/Spring Boot13 [SpringBoot] IntelliJ와 Gradle이 테스트 구성을 처리하는 방식의 차이에서 발생한 오류 문제 상황 기존 코드는 @SpringBootTest를 사용하였습니다. 테스트를 진행할 때 Intellij의 test를 실행하면 정상 작동되고 gradle clean test를 사용하면 빌드 오류가 났습니다. 즉, 테스트 & 개발할땐 전혀 문제가 없는데 빌드만 하면 저기가 실패합니다. @SpringBootTest를 사용하면 @Configuration, @Component 등과 같은 주석을 사용하여 빈과 해당 종속성을 정의하여 Spring이 이러한 개체의 인스턴스화, 연결 및 수명 주기 관리를 처리할 수 있도록 합니다. // 오류 코드 Could not detect default configuration classes for test class [com.ll.MOIZA.boundedContext.select.. 2023. 6. 28. [SpringBoot] @SpringBootTest와 @Import @SpringBootTest와 @Import Spring Boot에서 적절한 테스트 구성 접근 방식을 선택하는 것은 효과적이고 안정적인 테스트 환경을 만드는 데 중요합니다. 각 접근 방식의 목적, 용도, 특성 및 이점을 자세히 살펴보고 다른 접근 방식을 선택해야 하는 이유에 대해 알아보겠습니다. @SpringBootTest: 목적 및 역할: @SpringBootTest는 Spring Boot 테스트 프레임워크에서 제공하는 강력한 주석입니다. 통합 테스트를 위한 애플리케이션 컨텍스트를 생성하고 모든 구성, 구성 요소 및 빈과 함께 전체 컨텍스트를 로드합니다. 사용법: 테스트 클래스에 @SpringBootTest로 주석을 달아 런타임 환경을 유사하게 모방하고 포괄적인 통합 테스트를 수행합니다. 구성 요소 검.. 2023. 6. 28. [Spring Boot] Spring Boot 3.x 실행 안될 경우 3.X부터는 Java 17부터 지원된다. 기존에 Java8, 11등을 사용하시던 분들은 3.x 스프링 부트 프로젝트를 실행할때 에러들을 만나게 된다. //error No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.1 was found. The consumer was configured to find a runtime of a library compatible with Java 16, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6' .. 2023. 4. 24. DB 연동 에러 HikariPool-1 - Exception during pool initialization ERROR 5084 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. 이러한 오류가 나면 application.properties 파일에 spring.jpa.hibernate.ddl-auto = none 이 조건을 추가하면 된다. 이미 만들어진 테이블 생성하는데서 오류가 난듯하다. 2022. 11. 30. 스프링부트 몽고DB find*() query에러 spring boot with mongodb error //error at com.aks.springStorage.SpringStorageApplication.main(SpringStorageApplication.java:22) [classes/:na] Caused by: org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 2 and error message 'Field 'locale' is invalid in: { locale: "testDB" }' on server localhost:27017; nested exception is com.mongodb.MongoQueryException:.. 2022. 11. 25. spring-boot, react, axios 사용시 Cors, session, cookie 문제 Spring-boot로 rest형식의 api를 구현하였고, React로 구현된 Client와 연결하는 작업중에 발생한 이슈이다. 구글링해서 찾은 3가지 방법 시도 1. spirn-boot에서 CORS 설정 -> 값 주고 받기 성공 (session 값은 가져오지 못한다.) (Cross-Origin Resource Sharing,CORS)란 다른 출처의 자원을 공유할 수 있도록 설정하는 권한 체제 즉, CORS 를 설정하지 않거나 잘못 설정하는 경우, 리소스를 공유하지 못한다. config.WebConfig.java 설정 package com.example.booking_service_01.config; import org.springframework.context.annotation.Configuratio.. 2022. 3. 4. Spring boot Rebuild없이 정적소스(HTML,CSS,js) 적용방법 devtools 라이브러리 의존성 추가 maven org.springframework.boot spring-boot-devtools 2.0.4.RELEASE Gradle compile group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.0.4.RELEASE' application 옵션 추가 application.yml spring: devtools: livereload: enabled: true freemarker: cache: false thymeleaf: cache: false application.properties spring.devtools.livereload.enabled=true spring.freemark.. 2022. 2. 25. JPA & PostgreSQL 연동 JPA(Java Persistence API)란 ORM에 대한 자바 API 규격 ORM(Object Relational Mapping)이란 객체가 테이블이 되도록 매핑 시켜주는 프레임워크 Hibernate는 JPA를 구현한 ORM 프레임워크 중 하나 설정 dependency org.springframework.boot spring-boot-starter-data-jpa org.postgresql postgresql runtime DB 연결정보 (postgresql은 미리 설치되어 있어야하며, DB에서 설정한 값을 가져와야한다.) # resources/application.properties # Datasource Settings spring.datasource.url=jdbc:postgresql://12.. 2021. 9. 3. JPA의 Entity 정의 JPA에서 사용되는 엔티티 클래스는 테이블과 매핑되는 클래스이다. 테이블에 대응하는 하나의 클래스 선언 ***엔티티 클래스의 선언***은 XML 파일에 작성하는 방법과 Java 파일에 직접 애노테이션으로 작성하는 방법이 있다. 어노테이션이 읽기 편하다. Entity Manager 엔티티를 관리하는 객체 매니저의 책임이 전부 영속성 엔티티의 CRUD에 관련 엔티티의 저장 엔티티의 수정 엔티티의 삭제 엔티티의 조회 특징 엔티티 매니저는 영속성 상태의 엔티티 관리를 위해 DB 세션과 밀접한 연관을 가지기 때문에, 여러 스레드에서 공유하여 사용하면 위험하다. 엔티티 매니저 팩토리로부터 엔티티 매니저 생성 각 스레드마다 엔티티 매니저를 생성하는 방식이 권장된다. 획득한 커넥션을 통해 엔티티 CRUD 관리 데.. 2021. 8. 27. JPA의 Entity와 DTO를 구분하여 사용해야하는 이유 이유 view, service와 통신하는 DTO 클래스는 자주 변경된다. 반면 Entity는 그에 비해 변경도 적고, 영향범위는 매우크다 테이블에 매핑되는 정보가 실제 View,service에서 원하는 정보와 다를 수 있다 DTO를 사용하지 않고 Entity를 넘기다 보면 원하지 않은 정보까지 전달하게 되어 문제가 발생할 수 있다. Entity 테이블에 대응하는 하나의 클래스 DTO 계층간 데이터를 교환할 때 사용하는 객체 로직을 갖고 있지 않은 데이터 객체, getter/setter 메소드만 갖음 DB외에서 사용 ex)Service, View DTO와 Entity간의 데이타전달객체의 매핑은 ModelMappper를 활용하자. ModelMapper를 적극적으로 활용하면 DTO와 Entity간의 객체전환 .. 2021. 8. 20. JPA(Java Persistence API)란 JPA(Java Persistence API)란 자바 진영의 ORM 기술 표준 Persistence는 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미 JPA는 자바에 있는 데이터를 영구히 기록할 수 있는 환경을 제공하는 API이다.(DB Mapping) ORM을 사용하기 위한 인터페이스를 모아둔 것 ORM 이란 Hibernate(ORM 프레임 워크) 다양한 ORM 프레임워크 중 가장 많이 사용되는 프레임워크, Open Source SW 이러한 Hibernate 기반으로 만들어진 ORM 기술 표준이 바로 JPA JPA를 사용하려면 Hibernate를 사용하면 된다. 장단점 장점 JPA는 반복적인 CRUD 작업을 생략가능 JPA는 영속성(영구적) 컨텍스트를 가지고 있다. 불.. 2021. 8. 6. REST API REST(Representational State Transfer) 정의 자원(resource)의 표현(representation)에 의한 상태(state) 전달(transfer) 구성 요소 자원(Resource) : URI 행위(Verb) : HTTP Method HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공 표현(Representation of Resource) Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다. 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 표현으로 나타내어 질 수 있다. JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이나 JSON을 주.. 2021. 7. 23. Spring Boot MVC Pattern(Service, DAO, DTO, VO) Spring Boot Framework에서의 MVC Pattern은 일반 MVC Pattern과 조금 다르다. 스프링에서는 유저의 요청을 받는 DispathcerServlet이 핵심이며 이것이 Front Controller의 역할을 맡는다. Reference : https://chanhuiseok.github.io/posts/spring-3/ Front Controller Pattern Spring framework used Front Controller Pattern 요청을 분석하여 세부 컨트롤러들에게 필요한 작업을 분배 모든 리소스(Resource) 요청을 처리해주는 하나의 컨트롤러(Controller)를 두는 패턴 MVC(Model-View-Controller) Pattern과 함께 사용하는 패턴 .. 2021. 7. 9. 이전 1 다음 728x90