Java193 Java Reflection 알아보기 Java Reflection은 이름별로 클래스 및 데이터 구조에 대한 정보의 동적 검색을 지원하고,실행중인 Java 프로그램 내에서 해당 정보를 조작할 수 있습니다. Java Reflection 활용 예시 : Framework, IDE에서 내부적으로 동적 바인딩 기능 사용(프로그램 실행 중 동적으로 클래스 정보 가져옴)ex. IntelliJ 자동완성, Spring Framework Annotation,@Getter,@Setter 도 리플렉션을 사용하여 필드 정보를 가져와 구현한다.ClassLoader 자바 클래스 로더는 런타임 시 클래스를 동적으로 JVM에 로드하는 역할을 수행한다.이때, Class 정보를 CLASSPATH(클래스 파일을 찾는데 기준이 되는 파일 경로)에서 찾는다. 만약a() 메서드를 가.. 2024. 5. 16. JVM 메모리 구조 Runtime Data Area = JVM의 메모리 영역 1.Method Area 메소드 영역에서는 정적 필드와 클래스 구조를 저장한다. 2. Heap Areanew 연산자로 생성되는 객체와 배열등이 저장된다. 가비지 컬렉션의 대상이 되는 공간이다. 3. Stack Area임시적으로 사용되는 변수나 정보들이 저장된다 4. PC 레지스터현재 수행중인 JVM 명령어 주소를 저장한다 5. Native Method Stack기계어로 작성된 프로그램을 실행시키는 영역이다. Java Heap은 JVM이 관리하는 메모리 영역, Native Memory는 운영체제가 관리하는 메모리 영역이다.Java 8 부터는 클래스 정보가 Metaspace라는 영역에 올라간다 클래스 정보는 처음 사용될 때 메모리에 그 정보를 올.. 2024. 5. 14. H2 Database 사용법 최초 생성 주소를 아래와 같이 생성(파일생성)jdbc:h2:~/ 최초 생성 이후 접속 시 접근 주소jdbc:h2:tcp://localhost/~/ 2024. 5. 13. MAVEN 도서 읽으면서 정리한 내용 [자바 세상의 빌드를 이끄는 메이븐] 이라는 책을 읽으면서 알게된 내용을 정리하려고 함. 메이븐은 'mvn' 명령을 실행하면 기본적으로 pom.xml 파일을 읽어 빌드를 실행한다. pom.xml 파일이 아닌 다른 설정 파일을 사용하고자 한다면 '-f' 또는 '--file' 옵션을 사용하면 된다. ex) mvn -f mypom.xml test 아키타입 메이븐의 템플릿 프로젝트로 프로젝트를 생성하면 프로젝트의 뼈대를 자동으로 생성할 수 있다. 메이븐의 이 같은 기능을 아키타입 이라고 한다. 메이븐에서 제공하는 아키타입은 메이븐 중앙저장소에서 관리한다. 메이븐 아키타입을 통해 기본 디렉토리 구조를 자동으로 생성한다. (project이름/src/main/java/groupId값 으로 만들어지는 것) pom.xm.. 2024. 4. 1. View에 사용자 이름을 전달하는 Controller 중복 코드 제거 문제 현재 Header메뉴에 사용자 이름을 표시하고자 사용자 인증이 완료된 경우 GET요청을 처리하는 ViewController에서 Model에 사용자 이름을 담아 view에 전달하고 있는데, 이 코드가 로그인이 필요한 메서드에 모두 포함되고 있어서 filter를 활용하여 코드 중복을 제거하고자 함 상기 코드에서 Model.addAttribute(“username”,findUsername); 부분이 중복되고 있습니다. 해결 과정 OncePerRequestFilter Class 활용 Http Request의 한 번의 요청에 대해 한 번만 실행하는 Filter인 OncePerRequestFilter를 상속받아 UsernameFilter Class를 생성했습니다. 이를 활용하여 request에 data(사용자.. 2024. 3. 19. 검색 이력 저장 시 시간 저장 문제 해결 Spring Boot v2.7.18, Mybatis, MariaDB 환경에서 개발하던 중 발생한 문제 검색 이력 저장 시 milliseconds 단위까지 저장되지 않음(24.03.14) 문제 검색 이력을 담는 테이블의 Mapper를 JUnit5로 테스트 하던 중 검색 이력 저장 시 milliseconds 단위까지 저장되지 않는다는 것을 발견했습니다. 현재 사용자의 login_id와 검색 시간인 search_date 두개의 컬럼을 PK로 사용하고 있고, search_date가 milliseconds 단위까지 포함해야 데이터 중복이 일어나지 않기 때문에, milliseconds 단위의 저장은 필수로 이루어져야 합니다. 해결 과정 알고보니 DB별로 TIMESTAMP 타입의 사용법이 달랐고, MariaDB의 T.. 2024. 3. 19. 이전 1 2 3 4 5 6 7 ··· 33 다음