Programming/Java 22

Redis에 Spring Cache를 적용할때 서비스 별로 Expire 시간 다르게 하기

github 링크 : https://github.com/armyost/RedisCacheableVariousTimes GitHub - armyost/RedisCacheableVariousTimes: This project gives various duraton option for cache This project gives various duraton option for cache - GitHub - armyost/RedisCacheableVariousTimes: This project gives various duraton option for cache github.com 예를들어 어떤 기능은 1Day, 다른 기능은 1Hour로 Cache 세팅을 하고자 한다면 CacheName별로 다른 Configur..

Programming/Java 2023.11.06

JPA 사용법

Hexagonal Architecture, Clean Architecture가 뜨면서 JAVA와 Python에도 어플리케이션의 Repository, Entity 정의가 필요해지고 있다. Git 주소 : https://github.com/armyost/jpaJoinSample GitHub - armyost/jpaJoinSample Contribute to armyost/jpaJoinSample development by creating an account on GitHub. github.com JPA는 Entity, Repository가 필요하다. Repository는 일종의 Entity에 대한 연산을 위한 인터페이스 이다. JPA가 필요한 이유는.. 요즘에는 워낙 다양한 데이터저장소가 있다보니 다양한 타..

Programming/Java 2023.10.11

SpringSecurity로 OAuth 인증인가 구현. Kakao 소셜인증을 서버로..

아래는 OAuth 2.0 표준을 따라 UserInfo Endpoint에서 사용자 정보를 가져오는 예제입니다. ※ 대부분의 Posting에는 Token Payload를 JWT Claim을 통해서 데이터를 복호화 하는 방법이 소개되어 있습니다. Git 주소 https://github.com/armyost/Oauth2Sample/tree/main GitHub - armyost/Oauth2Sample: This is OAuth2 Authentication sample with SpringSecurity This is OAuth2 Authentication sample with SpringSecurity - GitHub - armyost/Oauth2Sample: This is OAuth2 Authenticatio..

Programming/Java 2023.09.12

Spring Security Filter Chain 설명

Spring Security는 인증,인가에 대해 개발자가 필요한 로직을 대부분 구현해 놓았다고 보면 된다. 웬만한 인증인가에 필요한 로직이 다 있음. 따라서 적극적으로 사용하는 것이 문명의 혜택을 누리는 것이라 생각한다. https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/config/annotation/web/builders/HttpSecurity.html 필터설명 SecurityContectPersistenceFilter SecurityContexRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함. LogoutFilter 로그아웃 URL로 지정된 가상URL에 대..

Programming/Java 2023.09.06

SpringFramework 에서 Redis 를 활용한 Session Storage 분리

- SpringSession & Redis관련 Bean 생성 ※ SpringSession 라이브러리는 Clustered Session 제공을 위해 Servlet에 비종속적인 Session LifeCycle 관리 라이브러리 ※ 스크립트 위치 : /src/main/resources/egovframework/spring/context-*.xml - RedisTemplate Bean 생성 ( Template의 경우 커스텀한 설정이 필요할 수 있어 JAVA Config로 정의함) @Configuration public class SessionConfig { private LettuceConnectionFactory redisConnectionFactory; @Autowired public SessionConfig..

Programming/Java 2023.09.06

JSESSIONID만으로 세션 유효성 검증하는 방법

1. 아래와 같이 Interceptor Class를 정의한다. Prehandler에 세션체크 로직을 정의한다. package egovframework.example.com; import javax.servlet.ServletContext; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.loggerFactory; import org.springframework.web.servlet.ha..

Programming/Java 2023.08.28

Spring Batch에 대한 고찰

배치가 단순히 Fetch From Source > Data CUD > Data Write 이런 프로세스라면 어려울 것도 없다. 데이터가 많은 금융, 산업 쪽은 배치가 무지무지 복잡하다... 배치가 복잡해지는 이유는 다음의 요소들이 흐름에 끼어있기 때문이다. 1. FETCH할 SOURCE가 여러개 2. DATA WRITE할 DESTINATION이 여러개 - 병렬 WRITE - 분기 WRITE 3. FETCH DATA의 FILTERING을 통한 다이어트 4. DATA 가공 과정에서 분기 - 단순 분기 - 동적 조건에 따른 분기 이런 요소들로 인해서 복잡한데 이걸 극복하는 컨셉은 크게 두가지가 있다. 가. Spring Batch의 Object를 써서 극복할 것인지 나. JAVA와 SQL로 극복할 것인지 가. ..

Programming/Java 2023.03.31

spring5의 Reactive 프로그래밍 모델

어느분께서 알려주셔서 찾아보았다. 리액티브 프로그래밍 모델 이란? Keyword : 반응형(이벤트Driven), 비동기(Non-Blocking), BackPressure(안전장치) 반응형 : 리액티브로 짜여진 어플리케이션은 탄력적으로 worker thread가 반응할 뿐만아니라 worker thread가 레거시 방식보다 더많이 늘어날 수 있다. 이는 각 worker thread가 상호의존성이 없어 tied up하지 않기 때문이다. 마치 Nginx와 Apache의 아키텍처 차이와 같은 느낌.. 비동기 : Thread A가 Thread B를 참조할 경우 Thread A는 Thread B의 Return을 대기하지 않는다. Thread는 각자 자기 할일을 하는것 BackPressure : Message(Comm..

Programming/Java 2022.07.14