본문 바로가기

분류 전체보기16

[Java] 리플렉션(Reflection) 이란? (feat. 어노테이션) 리플렉션 (Reflection) JVM은 클래스 정보를 클래스 로더를 통해 읽어와서 해당 정보를 JVM 메모리에 저장한다. 저장된 클래스 정보가 마치 거울에 투영된 모습과 닮아있어, 리플렉션이라 불린다. 리플렉션을 사용하면 생성자, 메소드, 필드 등 클래스에 대한 정보를 아주 자세히 알아낼 수 있다. 대표적으로 여러 라이브러리, 프레임워크에서 사용되는 어노테이션(@)이 리플렉션을 사용한 예시이다. 리플렉션을 사용하면 클래스와 메소드에 어떤 어노테이션이 붙어 있는지 확인할 수 있다. 어노테이션은 그 자체로는 아무 역할도 하지 않는다. 리플렉션으로 @Component, @Bean 과 같은 어노테이션을 프레임워크의 기능을 사용하기 위해 사용할 수 있는 것이다. 리플렉션을 사용하면 접근 제어자와 무관하게 클래스.. 2023. 12. 6.
[Java] int vs. Integer (feat. wrapper class) int 와 integer는 같은거라 생각했지만 Java 에서는 다르다고 한다. int는 변수의 타입(자료형)이다. 자료형은 기본형(primitive type), 참조형(reference type)으로 나뉘고, int는 이 중에서 기본형에 속한다. 그럼, Integer는 뭘까? Integer는 int의 wrapper 클래스 이다. wrapper 클래스는 기본 자료형을 객체로 다루기 위해 사용하는 클래스를 의미한다. 기본 자료형을 객채로 다룬다? 무슨 말이지? * 매개변수로 객체를 필요로 할때 * 기본형 값이 아닌 객체로 저장해야할때 * 객체 간 비교가 필요할때 프로그래밍을 하다보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 있다. 이 때 기본 자료형을 객체로 다루기 위해서 사용하는 클래스들을 wra.. 2023. 12. 4.
[Java] 로그 레벨(Logging Level) 로그(Log)란 소프트웨어 개발 과정 혹은 운영 과정에서 발생하는 문제점을 모니터링하기 위해 남겨 놓는 것이다. 로그가 중요하지만, 무분별하게 남기는 것은 나쁜 습관이다. 정상적이지 않은 모든 상황에서 전부 로그를 남기고 처리하게 되면, 불필요한 로그로 인해 정작 봐야할 심각한 에러 로그를 놓칠 수 있다. 따라서 효율적인 모니터링을 위해 적정 수준에서 로그 레벨을 구분하는 것이 필요하다. 로그 레벨은 로그 메시지에 포함된 메시지의 중요성과 심각성에 대한 대략적인 정보, 기준이라고 할 수 있다. 시스템에 치명적인 정도에 따른 순서는 다음과 같다. FATAL > ERROR > WARN > INFO > DEBUG > TRACE 다음은 각 로그 레벨에 대한 설명이다. FATAL 애플리케이션의 중요한 기능이 더 .. 2023. 11. 27.
[CS] HMAC 활용 보호되어 있는 글 입니다. 2023. 11. 27.