![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/PMjeW/btqy5dFsyTk/hmccgROLXLLh1YB3Z2UMB1/img.png)
JVM의 구조 클래스로더 .class에서 바이트코드를 읽고 메모리에 저장 로딩: 클래스 읽어오는 과정 링크: 레퍼런스들을 연결한다 초기화: static 값들 초기화 및 변수에 할당 메모리 크게 5가지 영역이 존재한다. 메소드 영역 클래스 수준의 정보 클래스명(패키지명 포함), 부모클래스명(상속받은 클래스 존재시) 메소드, 변수 정보를 저장한다. 메소드 영역에 존재하는 자원은 공유자원이다. 다른영역에서 접근이 가능하다. 힙 영역 인스턴스를 저장한다. 클래스를 로딩만해도 .class 타입의 객체가 저장이 된다. App 클래스가 로드되면 A.class 객체가 저장된다. 명시적으로 생성한 객체도 저장된다. 스택 영역 (Thread) 스레드에서 공유하는 자원 스레드마다 RuntimeStack이 생성되고, 내부에 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/BAO5B/btqy3a23il9/duwXXOrdQmeOWVcnQcSlGK/img.png)
JVM, JRE, JDK 이해하기 JVM (Java Virtual Machine) 자바 가상머신으로 자바 바이트 코드를 인터프리터, JIT컴파일러를 사용해서 Native OS 에 최적화된 코드로 변형한 뒤 실행하는 역할을 한다. 바이트 코드를 실행하는 표준이자 구현체 이다. JVM 자체는 표준이며, 특정 벤더가 구현한 JVM 이 구현체이다 JVM 스펙 https://docs.oracle.com/javase/specs/jvms/se11/html/ 특정 플랫폼(OS)에 종속적이다. JVM의 역할 클래스를 읽어 들인다. 메모리에 로드한다. 여러 구역으로 나뉘어진 메모리 공간을 관리한다. 바이트 코드를 실행 벤더 오라클, 아마존, Azul ... JRE(Java Runtime Environment) JVM 홀로..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/emBKpG/btqy03wZu1U/35p5cvVSMuSVLehmeYPhik/img.png)
Spring Security - Spring Data 연동 Spring Security 가 제공하는 Spring Data 연동기능에 대해 살펴보자 Spring Data 의존성 추가하기 Spring Security Data는 Spring Boot가 Version 관리를 해주고 있지 않은 의존성이다. 따라서 Spring Boot Property에 존재하는 spring security version을 따르도록 하자. 이 경우에는 boot version이 바뀌면 security의 버전도 바뀌기때문에 버전관리에 용이하다. 연관관계 추가하기 Spring Security Data 기능을 테스트하기위해 엔티티하나를 추가하고 간단한 연관관계를 맺도록 한다. Book Book 엔티티와 Account엔티티는 Author라는..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bGxsS9/btqy0S2HAJZ/IF1KZQQ1BiRK2RGuqKFKw0/img.png)
Spring Security - @AuthenticationPrincipal @AuthenticationPrincipal 로그인한 사용자의 정보를 파라메터로 받고 싶을때 기존에는 다음과 같이 Principal 객체로 받아서 사용한다. 하지만 이 객체는 SecurityContextHolder의 Principal과는 다른 객체이다. 이 객체는 JAVA 표준 Principal 객체이며 우리가 참조할수 있는 정보는 name 정보 밖에 없다. @AuthenticationPrincipal 애노테이션을 사용하면 UserDetailsService에서 Return한 객체 를 파라메터로 직접 받아 사용할 수 있다. 하지만 이방법도 우리가 원하는 방법은 아니다. 현재 로그인한 사용자의 정보를 참조하고 싶을때 도메인의 Use..