
Coroutine, Webflux<Mono>
Spring + Webflux Webflux (Reactive) 를 이해하기 위해 sync, async, blocking, non-blocking 차이를 이해해야 했고, async 한 코딩을 위해 CoroutineScope 를 사용하면 편리하다는 점을 알게 되었습니다. Webflux 를 이해하기 위해 일반 sync + blocking 코드를 async + non-blocking 코드로 변환해가며 이해하고자 노력하였습니다. #1 Sync 코드 아래 코드를 보면, 1~3 까지 출력을 두번 합니다. 첫번째 loop문이 끝나야 두번째 loop문을 실행합니다. 순서대로 코드가 실행되며 (sync), 앞의 loop문은 뒤의 loop문을 blocking 한다고 볼 수 있습니다. (1..3).forEach {..
- Spring Framework/Spring webflux
- · 2022. 10. 21.
![[Spring] 트랜잭션의 전파 설정별 동작](http://i1.daumcdn.net/thumb/C120x120/?fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FkTJUb%2FbtrMJl36OfZ%2FAAAAAAAAAAAAAAAAAAAAAPn7mg7FBNKr1EKy5sEJr65opCsguQZNroRkZnDZ3uZb%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DA0o6pLvYSn5vTx8Zj2Gwv89TniA%253D)
[Spring] 트랜잭션의 전파 설정별 동작
트랜잭션의 전파 설정이란 Spring에서 사용하는 어노테이션 '@Transactional'은 해당 메서드를 하나의 트랜잭션 안에서 진행할 수 있도록 만들어주는 역할을 합니다. 이때 트랜잭션 내부에서 트랜잭션을 또 호출한다면 스프링에서는 어떻게 처리하고 있을까요? 새로운 트랜잭션이 생성될 수도 있고, 이미 트랜잭션이 있다면 부모 트랜잭션에 합류할 수도 있을 것입니다. 진행되고 있는 트랜잭션에서 다른 트랜잭션이 호출될 때 어떻게 처리할지 정하는 것을 '트랜잭션의 전파 설정'이라고 부릅니다. 전파 설정 옵션 트랜잭션의 전파 설정은 '@Transactional'의 옵션 'propagation'을 통해 설정할 수 있습니다. 각 옵션은 아래와 같습니다. REQUIRED (기본값) 부모 트랜잭션이 존재한다면 부모 트..
- Spring Framework/Spring 입문 - 개념 및 핵심
- · 2022. 9. 21.
[Spring] 필터(filter)와 인터셉터(interceptor)의 차이
Controller에 요청이 들어오기전에 무엇인가를 수행한다는 기능만 보면 interceptor와 filter는 무척 비슷해 보인다. (전, 후처리기 역할을 수행한다.) 위의 사진을 보면 차이점을 쉽게 알 수 있는데, 둘다 컨트롤러 전에 작업을 처리하는 용도로 사용되지만 호출되는 시점이 다르다. 필터(Filter)는 dispatcherServlet으로 요청이 가기전에 실행되고 인터셉터(Interceptor)는 Controller로 요청이 가기전에 실행이된다. Filter DispatcherServlet 앞단에서 정보 처리 J2EE 표준스펙에 정의되어 있는 기능 Interceptor DispatcherServlet에서 Handler(Controller)로 가기전에 정보 처리 SpringFramework에서..
- Spring Framework/Spring 입문 - 개념 및 핵심
- · 2022. 6. 7.
[Spring] 스프링 @(어노테이션) 종류
Spring framework Annotation 개념 XML : 분리 - 결합도를 낮추고 유지보수성을 높이기 위해 xml로 설정하였으나 xml이 너무 많아지면 오히려 유지보수성이 낮아지는 아이러니한 상황 발생 - 유지보수성에 방점 - 시스템 전체에 영향을 주고 이후에 변경 가능성이 있는 것은 xml로 설정. https://medium.com/@2xel/spring-framework-annotation-%EA%B0%9C%EB%85%90-c26c15716538 @Component 태그를 추가하면 어노테이션이 적용된 클래스를 빈으로 등록하게된다. 태그는 어노테이션과 관련해서 BeanPostProcessor를 함께 등록한다. @Required(RequiredAnnotationPostProcessor) @Aut..
- Spring Framework/Spring 입문 - 개념 및 핵심
- · 2022. 6. 7.
Spring Security 구현 정리
스프링 시큐리티는 "인증"과 "권한"이 있다. Authentication(인증) : '이것' 이라고 주장하는 주체(user)가 '이것'이 맞는지 확인하는 것 코드에서 Authentication : 인증 과정에 사용되는 핵심 객체 ID/PASSWORD 등 여러 방식으로 인증에 필요한 값이 전달되는 하나의 인터페이스 #인증방식의 종류 1) credential 기반 인증 : 사용자명과 비밀번호를 이용한 방식 2) 이중 인증 (twofactor 인증) : 사용자가 입력한 개인 정보를 인증 후 추가인증(OTP) 하는 방법 3) 하드웨어 인증 : 자동차 키 Spring Security는 credential 기반의 인증을 취한다. 로그인 과정 AuthenticationFilter 필터 리스트 WebAsyncManag..
- Spring Framework/Spring security
- · 2022. 5. 24.
[Spring] 비밀번호 암호화 SHA-256 / MD5
import java.security.MessageDigest; public class EncryptionUtils { public static String encryptSHA256(String s) { return encrypt(s, "SHA-256"); } public static String encryptMD5(String s) { return encrypt(s, "MD5"); } public static String encrypt(String s, String messageDigest) { try { MessageDigest md = MessageDigest.getInstance(messageDigest); byte[] passBytes = s.getBytes(); md.reset(); byte[..
- Spring Framework/Spring security
- · 2022. 5. 24.