spring

spring

sts xml 다운로드 안되는 오류

xml 파일에서 다운로드가 안돼서 모든 곳이 다 빨간 밑줄이 쳐졌었다. 실행은 돼서 그냥 보이는 오륜가? 하고 넘겼는데 어느 순간부터 실행이 잘 안됐다..  Window의 Preferences에서 XML(Wild Web Developer)에 들어가면 Download 선택하는 것이 있는데 체크가 해제되어 있었다. 이를 체크하니 잘 다운받아졌고 빨간 밑줄이 사라졌다. 휴~

spring

redis test 환경 구축

이전에 구축한 redis에 대해 잘 작동되는지 test로 확인하고 싶었다. 찾아보니 방법은 embedded redis를 사용하는 것과 test container를 사용하는 것 2가지가 있었다. 전자의 방법은 업데이트가 오래돼서 후자 방법을 사용하기로 했다.. test container를 사용하게 되면 테스트 실행 시마다 도커 컨테이너가 실행되고 자동 종료된다. RedisTestContainers public class RedisTestContainers implements BeforeAllCallback { private static final String REDIS_DOCKER_IMAGE = "redis:5.0.3-alpine"; private GenericContainer REDIS_CONTAINER..

spring

spring security, jwt

인증과 인가 인증(Authentication) : 사용자가 본인 맞는지(누구인지) 확인 인가(Authorization) : 인증된 사용자가 특정 장소(자원)에 접근 가능한지 확인 (권한 확인) spring security spring security는 애플리케이션의 인증과 인가를 담당하는 스프링 프레임워크다. Dispatcher Servelet에 요청이 돌아오기 전에 Filter에서 인증과 인가를 수행한다. controller에서는 요청에 대한 응답만을 제공할 수 있다. Filter는 Dispatcher Servelet 전에 적용, 가장 먼저 url 요청 받음 Interceptor는 Dispatcher와 Controller 사이에 위치 principal (접근 주체, 아이디) : 자원에 접근하는 대상 c..

spring

json 파싱 (json-simple)

webClient의 response가 json 형식이어서 처음에는 dto를 만들어서 정보를 다 받자! 고 생각했는데 나에게 필요하지 않은 정보가 대다수여서 String으로 받은 후 json 파서를 이용해 필요한 정보만 저장하기로 했다. (정말 많은 정보가 response로 들어왔는데 필요한 field는 8개 정도였다) Java 진영에서 많이 사용하는 Json 파서는 Jackson, GSON, json-simple 이렇게 3가지가 있는데 빅데이터 환경(Jackson)도 아니고, 마이크로 서비스나 분산 아키텍처 서비스(GSON)도 아니기 때문에 json-simple을 선택했다. build.gradle implementation group: 'com.googlecode.json-simple', name:'js..

spring

WebClient

webclient Spring WebFlux에서 제공하는 리액터 기반 비동기 형식으로 사용 가능한 API build.gradle implementation 'org.springframework.boot:spring-boot-starter-webflux' WebClientConfig timeout, 버퍼 메모리(기본이 256KB), 기본 header를 설정해줬다. webClient의 설정을 변경하고 싶으면 mutate를 사용해 복사해서 사용하면 된다. @Configuration public class WebClientConfig { @Bean public WebClient webClient(){ HttpClient httpClient = HttpClient.create().option(ChannelOpti..

spring/JPA

BaseEntity

생성 시간과 수정 시간을 상속만으로 간단하게 추가할 수 있도록 한다. BaseEntity @EntityListeners(AuditingEntityListener.class) 해당 클래스에 Auditing 기능을 추가해준다. (Jpa가 자동으로 시간 등을 기록해주는 기능) MappedSuperclass 해당 클래스 상속 시 createdAt과 updatedAt을 칼럼으로 인식하게 한다. SpringApplication에 @EnableJpaAuditing을 적용하면 활성된다. @Getter @EntityListeners(AuditingEntityListener.class) @MappedSuperclass public abstract class BaseEntity { @CreatedDate @Column(up..

spring

예외 처리 - @RestControllerAdvice

작년에 프로젝트를 진행할 때는 각 서비스와 컨트롤러 단에서 if로 체크해서 예외처리를 해줬다. 불편하다고 생각하고는 있었는데 전체를 다른 방식으로 바꿀 정도로 불편한건 아닌거 같아서 그대로 사용하다가 올해 프로젝트를 새로 하면서 전역 예외 처리를 사용하면서 이 방식에 대해 알게되었고, 지금 새로 시작한 프로젝트에서 전역 예외 처리를 구현해서 티스토리에 정리한다. 체크 예외, 언체크 예외 체크 예외 컴파일러가 처리하는 RuntimeException을 상속받지 않는 예외로 이를 처리하지 않으면 CompileError가 발생한다 (IOException, SQLException) 언체크 예외 RuntimeException을 상속받는 예외로 예외처리가 필수는 아니며 Transaction 롤백 대상이다. (비즈니스..

spring

공통 response 포멧 구현

3월에 시작한 프로젝트부터 공통 response를 구현해 사용했고 마침 새로운 프로젝트를 진행하면서 조금 변형하는 김에 티스토리에 정리하고자 한다. 사실 이전까지는 프론트에게 response를 넘겨줄 때 포멧을 생각하지 않았다. 그냥 응답 data가 잘 보내지면 그것에 만족하는 삶을 살았는데 생각해보니 data 말고도 넘겨주면 좋은 것들이 있었고, 특정 포멧으로 모든 response를 보내면 더 통일감이 있을 것 같았다. Json 포멧 성공과 실패 상황일 경우에 상태를 알려주는 status, response code 값, message, data, timestamp를 항상 같은 형식으로 보내주게끔 했다. 사실 이전 프로젝트에서는 code 값을 httpStatus code로 사용했는데 성공과 실패일 경우에..

hahihi
'spring' 카테고리의 글 목록