Spring

Spring

Request 와 Response

Request 와 Response 는 무엇일까? Request 는 요청 / Response 는 응답 이다. 즉 Clinet 에서 서버로 Request 요청을 보내게 되면 서버에서는 Response 응답을 해줘야 한다. ( 서버가 정상 작동을 한다는 가정하에 ) 다만, 만약 React 와 Spring이 포함이 된다면, 중간 React 서버에서 Client 에 request 를 받고 Spring 서버에 request 날려 Response 응답을 받고 component ( html ) 파일을 생성하여 Client 에게 전달된다. 이때 request 에는 많은 정보가 담겨서 들어오게 된다. 물론 react 쪽에서 데이터를 포함시켜 보낼수 있다. 이때 Json 방식을 쓸수 있고 여러가지 방법이 존재한다. 또한 우..

Spring

Spring Security (2)

UserDetailsService, AuthenticationProvider UserDetailsService, AuthenticationProvider 이것들은 무엇일까? 아래의 사진을 보자. 위에 사진처럼 AuthenticationProvider 걸치고 UserDetailsService 에서 검사한 후 다시 AuthenticationProvider 에 걸쳐서 response 하게 된다. 이때 내가 원하는 방식되로 검사하고 권한설정을 하여 인증 단게를 할수 있다. 코드 @Service @RequiredArgsConstructor @Slf4j public class LoginService implements UserDetailsService, AuthenticationProvider { private f..

Spring

Json 방식으로 데이터 보내기

PrintWriter 란? 바로 출력만 할수 있도록 도와주는 클래스이다. 우리가 많이 쓰던 System.out 이 PrintWriter 클래스에서 나온것이다. Response 응답할때 Request 를 받고 Response 에 응답할때 우리는 Json 방식으로 Response 할수 있다. 이때 Response 셋팅을 바꾸고 그 데이터를 전송할때 PrintWriter 로 할수 있다. 코드 response.setStatus(HttpServletResponse.SC_OK); response.setContentType(MediaType.APPLICATION_JSON_VALUE); String json = "{\"msg\": \"유저계정이 맞지 않습니다.\"}"; // JSON 응답 전송 PrintWriter w..

Spring

Validation 유효성 검증

validation 란? 유효성 검사를 쉽게 해줄수 있는 어노테이션을 지원해주는 Spring 라이브러리이다. 개인적으로 써봤는데 매우 편리하다. @Valid와 @Validated 대표적으로 @Valid와 @Validated 가 있다. 구조 @Valid와 @Validated 두개다 AOP 구현체를 사용하고 ArgumentResolver가 동작하게 된다. 이때 만약 유효성 검사에 통과가 되지 못하면, @Valid는 MethodArgumentNotValidException 예외가 발생된다. @Validated 는 ConstraintViolationException 예외가 발생된다. ( ControllerAdvice 로 오류를 발생되면 뺏어서 내가 원하는대로 바꾸자 ) @Valid와 @Validated 차이 @..

Spring

Redis (2)

Redis (1) 게시글에는 Spring Data Redis 를 이용하였다면 이제는 redisTemplate 를 이용해보자. 아래에 String Type 과 List Type 를 정리해서 만들어 놨다. 이 외에도 Hash Sorted Set Set 이있지만, 나중에 해보고 추가해보도록 하겠다. //Data type : String public void setString(String key, String value) { myRedisTemplate.opsForValue().set(key, value); } public String getString(String key) { return myRedisTemplate.opsForValue().get(key).toString(); } //Data Type : L..

Spring

Redis (1)

Redis 란? 메모리 기반의 데이터 저장소 휘발성을 가진 저장소이다. 비관계형 데이터베이스이자, key value 로 관리하는 cashe 같은 존재입니다. - Disk 가 아닌 메모리에 데이터를 저장 - 싱글 스레드 - 초당 5만~25만 Request 실행가능 - key-value 형식으로 데이터 저장 Redis 구조 구조는 총 4가지로 나뉘게 된다. Stand Alone, Master-Slave, Sentinel, Cluster 가 있다. 아래의 사진으로 설명을 대신 하겠다. Redis의 장단점 장점 : Read/ Write 속도 - Hardware 차이에서 오는 기본적인 performance gap - 다양한 type의 아키텍쳐를 지원. ( Single, Master-Slave, Sentinel, ..

Spring

Spring ControllerAdvice, RestControllerAdvice, ExceptionHandler

Spring ControllerAdvice, RestControllerAdvice, ExceptionHandler 란? @ExceptionHandler 는 @Controller , @RestController 가 적용된 Bean 에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능이다. 또한, @ControllerAdvice, @ResControllerAdvice 는 @Controller 에서 오류 발생한것을 잡느냐, @RestController 에서 잡느냐 에 따라 바뀌게 된다. 즉, 개발자가 생각해서 발생시켜 오류를 던지면 Advice 에서 잡아서 다시 return 해주는 방식이다. 아래의 예제를 통해 이해해보자. 예제 ApplicationException 는 내가 만든, RuntimeExc..

Spring

Lombok

LomBok 이란? 반복되는 매소드를 Annotation 을 사용하여 자동으로 작성하는 라이브러리다. Getter, Setter 같은 경우와 생성자 또는 빌드 할때 유용하게 쓰이게 된다. 이때 컴파일 과정에서 Annotation을 이용해서 코드를 생성하게 된다. Gradle compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' LomBok Annotaion ( 어노테이션 ) @Getter, @Setter 필드에 있는 변수들의 getter, setter 를 생성해준다. @Getter @Setter public class User { private String id; private String pw; } @N..

Spring

WebSocket(2)

ChannelInterceptor 란? WebSocket 에서 연결과 통신할때 인터셉트해서 쓰는 인터페이스이다. 아래의 매서드를 통해 재정의하여 preSend() 라는 매서드를 통해 StompCommand enum 클래스를 통해 StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message) 를 선언하여 해당 상태를 비교하여, 처리할수 있다. 또한 StompHeaderAccessor 는 STOMP 헤더(예: 대상, 콘텐츠 유형 등)를 기반으로 하는 공통 처리 헤더를 관리한다. @Override public Message preSend(Message message, MessageChannel channel) { return message; } Channe..

Spring

Spring Security (1)

Spring Security 란? Spring 기반의 애플리케이션의 보안을 담당하는 하위 프레임워크이다. 또한 인증 과 권한에 대한 부분을 Filter 흐름에 따라 처리 하고 있다. 해당 구조는 아래에 설명을 하겠다. Spring Security 구조 위와 같이 client 에서 login 을 요청하면 filter 에서 먼저 처리를 한 뒤 AuthenticationManager 에서 토큰 객체생성을 하고 Provider 에게 준다. 그 뒤 UserDetailsService 에 인증처리를 요청하고 다시 맞으면 주소에 대한 접근을 허용해준다. 예제코드를 보면 좀더 이해가 될것이다. Spring Security 예제 먼저 Spring 이 Spring Security 5.7.0-M2 버전부터 바뀌게 되었다. 원..

Domae_
'Spring' 카테고리의 글 목록 (3 Page)