Spring

낙관적 락(Optimistic Lock) 과 비관적 락(Pessimistic Lock): 낙관적 락 과 비관적 락은 데이터 동시성 문제를 해결 하기 위한 2 가지 주요 기법입니다.  둘 다 동시에 여러 트랜잭션이 동일한 데이터에 접근 할 때 데이터의 일관성을 보장하기 위해 사용됩니다. 하지만, 사용하는 방식과 적용 시점에서 큰 차이가 있습니다.1. 낙관적 락(Optimisitc Lock)1. 1. 개념데이터 충돌이 드물 것이라고 가정트랜잭션이 데이터베이스에 변경사항을 적용하기 전에만 충돌을 확인버전 관리(Versioning)를 통해 동시성 문제를 감지1.2. 동작 방식데이터를 읽어올 때 트랜잭션이 Lock이 걸지 않습니다.데이터를 수정한 후 업데이트 시점에 버전 번호를 확인하여 충돌 여부를 판단합니다.데..
옵저버 패턴(Observer Pattern)변화가 일어 났을 때, 미리 등록된 다른 클래스에 통보해주는 패턴을 구현하는 것입니다.일대다(one-to-many) 의존성을 가지며, 분산 이벤트 핸들링 시스템을 구현하는 데 사용됩니다.ex) event listener 옵저버 패턴 흐름1. 일 대 다 관계로 구성2. 관찰 대상의 상태가 변경되면 옵저버 한테 통보3. 통보 받은 값을 바꿀 수 있고, 삭제 하는 등의 적절한 대응을 합니다.4. 일 대 다 관계의 그룹에서 추가/삭제 될 수 있으며 그로 인하여 정보를 전달 받거나 받을 수 없게 합니다.옵저버 패턴 특징1. 대상 객체의 상태가 변경될 때마다 다른 객체의 동작을 트리거해야 할때2. 앱이 한정된 시간, 특정한 케이스에만 다른 객체를 관찰해야 할 때3. 한 객..
팩토리 메소드 패턴(Factory method pattern)생성 패턴 중 하나로 객체를 생성할 때 어떤 클래스의 인스턴스를 만들지 서브 클래스에서 결정합니다.즉, 인스턴스 생성을 서브 클래스에게 위임합니다.부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용합니다.부모 추상 클래스는 인터페이스에만 의존하고 실제로 어떤 구현 클래스를 호출할 지는 서브 클래스에서 구현합니다.이렇게 하면 새로운 구현 클래스가 추가되어도 기존 Factory 코드의 수정없이 새로운 Factory를 추가하면 됩니다. 팩토리 메소드 패턴의 구조팩토리 메소드 패턴 코드Product 인터페이스/** * 물건 A의 클래스 */public class CreateProductA implements Product{ ..
Proxy Pattern프록시 패턴은 객체 간의 간접적인 접근을 가능하게 하는 구조를 제공하는 패턴입니다.Proxy 클래스를 통해 대신 전달하는 형태로 설계되며, 객체를 바로 호출하는 것이 아닌 Proxy를 호출하는 패턴입니다.그러므로 실제 Client는 Proxy로 부터 결과를 받습니다.Proxy의 효과로 캐싱(Caching), 보안(Aop), 데이터 유효성, 지연 초기화, 로깅, 원격객체 등이 있습니다.객체지향 설계원칙 중 개방폐쇄의 원칙(OCP)과 의존 역전 원칙(DIP)을 따릅니다. Proxy Pattern 장단점장점보안성 향상유연성 향상성능 향상 단점코드 복잡성성능 저하Proxy Pattern 구조프록시와 객체는 동일한 인터페이스를 가지고 있으며 이를 통해 다른 인터페이스와 완전히 호환되도록 바..
JDK 11에 java.xml.bind 관련 에러 발생 Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext build.gradle 에서 implementation ‘javax.xml.bind:jaxb-api’ 추가 참고 : https://luvstudy.tistory.com/61#recentComments JDK 11에서 java.xml.bind 관련 에러 발생하는 경우 JDK 9나 10에서 프로젝트 실행 시 아래와 같은 오류가 나게 되는 경우가 있다. Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext Java EE 모듈과 CORBA 모듈이 Depre..
Spring Security Spring에서는 Web 기반의 Security, Method 기반의 Security 기능을 제공 Method 기반은 Method 별로 권한을 체크하며 Filter 단이 아닌 Controller 단에서 권한을 처리 Web 기반은 Filter 단에서 권한을 처리 두 개의 Security 적용 방식은 하나만 선택하는게 아니라 동시에 섞어서 사용 가능 예를 들어 Web에서 URL과 Token 인증을 하고 Method에서 권한에 따라 인가를 하는 방법이 있다. 왜쓰는가? -> 웹에서 서비스를 하기 위해 리소스와 유저 정보를 가지고 있는데 이를 보호하기 위해 보안 정책을 설정을 서포트하는 라이브러리인 Spring Security 사용 Config 에서 WebSecuerityConfig..
OncePerRequestFilter란? : 한 요청에 대해 한번만 실행하는 필터 포워딩(fowarding)이 발생하면 필터 체인(FilterChain)이 다시 동작되는데, 인증은 여러번 처리가 불필요하기에 한번만 처리할 수 있도록 도와주는 역할을 한다. OncePerRequestFilter의 doFilter() : 최초 실행 시에 ServletRequest 객체에 자신의 이름과 함께 true값을 함께 세팅해두고, doFilterInternal메소드로 자신의 기능을 수행한다. 그 후에 리다이렉트로 다시 실행되면 요청 객체에 담아뒀던 이전 수행에 대한 여부를 체크한다. public abstract class OncePerRequestFilter extends GenericFilterBean { ….(생략)..
서버 실행시 ASM ClassReader failed to parse class file 에러라면서 java파일 하나가 빌드가 안된다고 한다. 그래서 확인해보니 jdk 버전이랑 Spring 버전의 문제인듯 하다 현재 JDK 17, Spring Boot 2.4.1 Spring Boot 3.x 버전에선 17이 필수라고 한다. 근데 2.4.1 버전에서 17을 쓰려고 해서 오류가 난듯 하여 JDK 버전을 11로 낮추었다. preperence에서 Java Compiler에서 11 version으로 바꾸고 Build Tools>Gradle>JVM 을 11로 낮추었다.
defxyj
'Spring' 카테고리의 글 목록