목록Web/Spring (14)
공부하는 스누피
JUnit5란? JUnit은 자바 Unit Testing 프레임워크로, JUnit5는 이전 버전과는 다르게 3개의 서브 프로젝트로 구성되어 있습니다. JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform JVM에 테스트용 프레임워크를 실행시키는 기반 역할을 하며, JUnit4 베이스의 테스트 환경(Test Engine)을 제공한다. JUnit Jupiter JUnit5에서 쓰이는 프로그래밍 모델과 확장 모델을 제공합니다. Jupiter 베이스의 테스트 환경(Test Engine)을 제공한다. JUnit Vintage JUnit3, JUnit4 베이스의 테스트를 지원한다. 환경 요구사항 Java 8 이상 (테스트 대상이 되는 코드는..
1. 개요 Testcontainers는 JUnit test를 지원하는 Java 라이브러리로, Docker로 작동시킬 수 있는 일반 DB, 셀레니움같은 인스턴스들을 간편하게 테스트용으로 사용할 수 있게 한다. Testcontainers의 장점은 다음과 같다. * 데이터 액세스 레이어 통합 테스트: MySQL, PostgreSQL, Oracle 데이터베이스의 컨테이너화된 인스턴스를 사용해 데이터 액세스 레이어 부분의 코드를 테스트할 수 있다. * 통합 테스트 : 데이터 액세스 레이어뿐만 아니라 전체 애플리케이션 통합 테스트를 지원한다. * UI/인수 테스트 : 셀레니움을 지원해 각 테스트가 독립된 인스턴스의 브라우저에서 실행된다. dev 데이터베이스는 주로 테스트용으로 쓰이지만, 테스트 데이터가 격리되지 않..
API 통합 테스트 JUnit에서 제공하는 mockMvc는 api 호출을 통해 테스트를 수행합니다. 예상되는 응답을 설정할 수 있고, 실제 응답이 예상과 다를 경우 assert를 던져 테스트가 실패하도록 합니다. Test Context 설정 @ExtendWith(SpringExtension.class) @SpringBootTest(classes = SpringApplication.class, properties = { ".../application-test.yaml", ".../application.yaml" }) @ActiveProfiles("test") public abstract class TestSupport{ } - 테스트 클래스가 이 클래스를 상속 받게 하면 클래스 별로 Test Context..
Gradle 설정 // https://mvnrepository.com/artifact/mysql/mysql-connector-java implementation 'mysql:mysql-connector-java:8.0.16'application.properties 설정 # datasource config spring.datasource.url=jdbc:mysql://localhost/tobyspring spring.datasource.username=integer spring.datasource.password=1234 spring.datasource.driver-class-name=com.mysql.cj.jdbc.DriverDao에 DataSource import import javax...
스프링 클라우드는 분산 시스템을 자주 쓰이는 패턴으로 빠르게 구축할 수 있게 해준다. 2015년에 1.0 버전으로 출시되었으며, 넷플릭스 OSS 도구를 기반으로 했다. 2019년에는 2.1 버전을 출시하면서 넷플릭스 도구를 대체하는 컴포넌트를 제시했다. Resilience4j, 스프링 클라우드 로드 밸런서 등이 대체 컴포넌트에 해당된다. 또한, Azure, AWS, GCP같은 클라우드 플랫폼 서비스를 지원하는 기능이 추가되었다. 자주 쓰이는 패턴과 컴포넌트 - 서비스 검색 : 스프링 클라우드 로드 밸런서를 사용한다. - 에지 서버 : 스프링 클라우드 Gateway, 스프링 시큐리티 OAuth - 서킷 브레이커 : Resilience4j 컴포넌트를 사용한다. - 구성 중앙화 : 스프링 클라우드 Config..
velog.io/@rxjw95/ErrorSpring-boot%EC%97%90%EC%84%9C-Transactionaloption%EC%9D%B4-%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0 [Error]Spring boot에서 Transactional(option)이 되지 않는 경우 어이없는 문제를 찾아버렸다... velog.io Transactional 어노테이션을 사용하기 위해 어떤 패키지를 import했는지 다시 한번 체크해보자... javax면 readOnly를 사용할 수 없다....
타임리프 타임리프는 Server-side Java 템플릿 엔진으로, HTML, XML, JS, CSS를 처리할 수 있어 웹과 단일 환경을 지원한다. 타임리프의 주 목적은 템플릿을 유지보수가 용이하도록 제작하는 방법을 제공하는 것이다. 그래서 타임리프는 Natural Templates의 개념을 적용해 디자인에 영향을 미치지 않는 템플릿에만 로직을 주입하는 방식을 사용한다. 이 방법은 디자인 팀과 개발 팀의 갭을 줄이도록 해준다. 사용하는 방법 자체 컨트롤러 인터페이스를 사용하는 경우 타임리프를 사용하기 위해서는 응답 프로세스마다 타임리프 context를 설정해주어야 한다. 컨트롤러에서 뷰로 모델 객체를 넘겨주는 대신, 타임리프 context에 변수로 설정해주면 된다. Spring MVC 스프링의 ViewR..
커맨드 객체 값 검증 커맨드 객체란? HTTP 통신으로 들어오는 값을 자동으로 바인딩하는 객체. 검증 처리란? 폼 값 검증과 에러 메세지 처리를 포함하는 검증 과정이다. 스프링은 커맨드 객체를 검증하는 Validator 인터페이스와 에러 메세지를 출력하는 Errors, ValidationUtils 클래스를 제공한다. 필요한 모듈 (pom.xml) javax.validation validation-api 1.1.0.Final org.hibernate hibernate-validator 5.4.2.Final javax.validation validation-api 1.1.0.Final 검증 처리 방법 1. 글로벌 범위 Validator 모든 컨트롤러에 적용할 수 있는 Validator이다. 구현 방법 MVC..