Programming70 [Java] 리플렉션 (Reflection)이란 무엇일까? (개념/ 예시) 서론 이번 포스팅에서 다룰 내용은 '리플렉션'이다. 최근 "리플렉션이 무엇인가요?" 라는 질문을 받았는데, 제대로 된 답변을 못한 것 같다. C# 개발을 할 때 분명 사용은 해보았지만 개념적으로 설명하기엔 많이 미비한것같아 이번 기회에 정리를 해보려한다. 리플렉션(Reflection)이란? 리플렉션은 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API를 말하며, 컴파일 시간이 아닌 실행 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법이라 할 수 있다. 그럼 이 리플렉션은 언제 사용할까? 동적으로 클래스를 사용해야할 때 사용한다. 다시 말해, 작성 시점에는 어떠한 클래스를 사용해야할지 모르지만 런타임 시점에서 가져와 실행해.. Programming/Java 2022. 9. 23. JPA Entity의 @Setter를 지양하는 이유에 대해서 (feat. @Builder) 서론 이번 포스팅에선 JPA의 Entity를 사용할 때 @Setter를 지양해야하는 이유에 대해 알아보려합니다. 물론 @Setter의 사용이 100% 잘못되었다는 것이 아닙니다. 양방향 바인딩 시 Setter 사용이 더 용이할 수 있으나 이번 포스팅에선 일반적인 케이스만 다뤄보도록 하겠습니다. @Setter를 지양해야하는 이유 @Setter는 사용 의도/목적이 분명치 않다. (Update인지 Create인지) Entity를 만들 때는 외부에서 쉽게 변경할 수 없게 @Setter를 사용하지않는다. 그 이유는 @Setter를 사용하면 의도가 불명확하고 변경하면 안되는 중요한 값임에도 불구하고 변경 가능한 값으로 착각할 수 있다. (== 안정성 보장이 안된다.) 그러면 만약 값을 업데이트 시켜줘야하는 상황일 .. Programming/Spring 2022. 9. 10. [Spring] 스프링 빈 생명 주기에 대해서 (Spring Bean Life Cycle) 서론 보통 스프링 빈이 생성되거나 소멸될 때 특정한 작업을 하고싶은 경우가 있다. 예를 들어, 빈이 생성될 때 데이터베이스 커넥션 풀을 미리 생성하는 경우가 있다. 이러하게 빈이 생성되거나 종료될 때 빈의 라이프 사이클을 관리하는데 유용한 @PostConstruct, @PostDestroy 어노테이션을 사용하여 어떻게 작업을 진행하는지 알아보려한다. 스프링 빈의 라이프사이클 스프링 컨테이너 생성 빈 생성 의존관계 주입 초기화 콜백 사용 소멸 전 콜백 스프링 종료 초기화 콜백: 빈이 생성되고 빈의 의존관계 주입이 완료된 후 호출되는 것을 말한다. 소멸전 콜백: 빈이 소멸되기 직전에 호출된다. @PostConstruct란? @PostConstruct public void init() { System.out... Programming/Spring 2022. 8. 8. [Java] 코딩테스트 자주 사용하는 문법 정리 서론 Java로 알고리즘 문제를 풀 때 자주 사용하게 되는 문법들을 정리하려합니다. 계속해서 추가 예정입니다. 형 변환 Char To Int char myChar = '3'; int myInt = Character.getNumericValue(myChar); System.out.println(myInt); //결과: 3 String To Char String myString = "apple"; char[] myChars = myString.toCharArray(); for (int i=0; i 배열 요소 모두 더하기 int arr[] = new int[] {12,34,45,21,33,4}; int sum = Arrays.stream(arr).sum(); System.out.println("Array Su.. Programming/Java 2022. 7. 15. 원활한 MSA를 위한 Spring Cloud란? (개념/ 종류/ Config Server/ Gateway) 서론 이번 글에서는 MSA(마이크로 서비스 아키텍처)의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구성할 수 있도록 지원하는 Spring Boot기반의 프레임 워크인 Spring Cloud에 대해 알아보려한다. MSA에 대한 전반적인 지식은 알고있다는 전제하에 Spring Cloud를 중점적으로 알아볼 것이다. Spring Cloud란? Spring Cloud는 서론에서 말했듯 분산 시스템 개발에 효과적인 기능을 제공해주는 프레임 워크이다. 보통 분산 시스템이라 하면 circuit breakers, routing, proxy, load balancing 등이 있는데, 이때 이 spring cloud를 이용해서 이러한 분산 시스템을 쉽고 빠르게 서비스를 개발할 수 있게 해준다. 마지막으로 MSA를 곁들여.. Programming/Spring 2022. 6. 16. [Spring Boot] JPA Entity 현재시간(current_timestamp) 적용 방법(@CreationTimestamp/ @UpdateTimestamp) 서론 JPA를 사용할 때 현재시간 current_timestamp의 값을 넣고 싶을 때가있다. 이번 글에서 다루는 어노테이션만 잘 알아두면 아주 손쉽게 해당 기능을 적용시킬 수 있다. Hibernate Hibernate에서 엔터티 객체에 대해 Insert와 Update 쿼리가 발생할 때 자동으로 현재 서버 시간을 기입시켜주는 어노테이션을 제공해준다. Spring Framework 스프링 프레임워크에서도 하이버네이트와 같은 기능을 제공을 해주는데 이번 포스팅에서는 하이버네이트에서 지원해주는 두 가지 키워드에 대해서만 알아보려한다. 스프링 프레임워크에서 지원해주는 것은 검색어에 CreatedDate를 입력하면 좋은 자료들이 많이 나오니 참고하기 바란다. @CreationTimestamp 해당 어노테이션은 I.. Programming/Spring 2022. 6. 9. [Spring Boot] Jackson을 이용하여 Response값 Filtering 방법 (개념/ 예제) 서론 이번 글에서는 Jackson이라는 Dependency를 이용하여 Response의 값을 Filter하는 방법에 대해 알아보려한다. 개념부터 활용 예제까지 정리해보자. Jackson 라이브러리란? (@JsonIgnore, @JsonIgnoreProperties) 스프링 부트 환경에서 우리가 보통 아래와 같이 Json을 사용할 때 이 Jackson 라이브러리를 사용한다. Json -> Object Object -> Json 이 두 개의 변환(직렬화, 역직렬화)은 스프링 부트 웹 스타터 킷 org.springframework.boot:spring-boot-starter-web에 기본적으로 포함된 jackson 라이브러리를 사용하게 된다. 그러나 이번 글에서는 Jackson의 특정 기능을 사용하여 위해 아.. Programming/Spring 2022. 6. 7. [Spring] 의존성 주입(Dependency Injection)이란? (개념/ 예제/ 총 정리) 서론 이번글에서는 스프링을 이용한 의존성 주입에 대해서 알아보려한다. 의존성 주입(DI)은 크게 4가지 방법이 있다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입 위와 같이 4가지 방법이 있는데, 네가지 중 어떤 방식이 효율적이고 실제 실무에서 어떻게 쓰이는지 간략히 정리해보려한다. 의존성 주입(Dependency Injection)이란? Sprng Framework의 3가지 핵심 프로그래밍 중 하나인 의존성 주입(DI)는 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관게를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 여기서 말하는 .. Programming/Spring 2022. 5. 31. [Java] Singleton 패턴이란? (개념/ 사용 이유/ 장단점/ 예제) 서론 이번 글에서는 스프링 컨테이너를 이용하기 전 원초적인 싱글톤 패턴의 구현과 싱글톤 패턴의 개념/ 사용이유/ 장단점 등에 대해 알아보려한다. 싱글톤(Singleton) 패턴이란? 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴을 말한다. 이는 불필요한 인스턴스 생성을 막기 위해 사용한다고 보면 되는데, 메모리 관리에서는 장점이 많아서 가장 많이 쓰이는 디자인 패턴인데 물론 단점도있다. 하나씩 알아보자. 장점 다른 객체의 요청이 들어왔을 때 이미 처음 생성 때 만들어진 인스턴스로만 재활용을 할 수 있어 불필요한 객체 생성을 안해도된다. --> 메모리 효율성 ↑ 하나의 인스턴스를 사용하기 때문에 전역적으로 데이터 공유가 용이하다. 이미 생성해놓았기 때문에 객체 생성 시간이 줄어든다. 단.. Programming/Java 2022. 5. 29. [Vue] Vuex 새로고침 후 데이터 유지 방법 (초기화 발생 이유/ 예제) 서론 Vuex라는 상태관리 패턴을 사용한 페이지에선 새로고침을 하면 State에 저장해놓은 데이터가 초기화된다. 하여, 해당 데이터들이 사라지는 현상에 대해서 어떻게 해결할지 알아보려한다. 내용은 생각보다 간단하니 따라하기만 하면 쉽게 해결할 수 있다. npm vuex-persistedstate 사용하기 필자는 vuex-persistedstate라는 npm을 사용하여 해당 이슈를 해결하려한다. vuex-persistedstate ? vuex에 저장되는 값(State)들을 사용하는 웹 브라우저의 LocalStorage에 저장하여, 새로고침 시에도 해당 로컬스토리지의 값은 없어지지 않기 때문에 해당 값을 가져와 동기화시켜주는 역할을 한다. 아래에서 추가 설명을 하겠지만 해당 기능을 모든 페이지에 적용하면 L.. Programming/Vue 2022. 5. 24. [Java] Optional<T> 이란? (개념/ 종류 별/ 사용 방법/ 예제) 서론 프로그래밍을 하다보면 가장 조심해야할 에러 중 하나가 NPE(NullPointException)이다. 이 NPE는 보통 컴파일할 때 잡지 못하고 실행 중 갑자기 발생하는 에러이기에 잘못 걸리면 엄청 골치아파지는 에러 중 하나이기 때문이다. 그래서 우리는 보통 NPE를 방지하기 위해 null 검사 로직을 넣게 되는데 이 null인지를 검사하는 로직이 추가될 수록 코드가 복잡해지고 지저분해질 수 있다. 이번에 그래서 Java에서 Optional이라는 NPE를 방지할 수 있는 함수형 클래스를 지원해주게 되었는데, 어떻게 사용하고 사용하면 어떤 효과가 있는지 알아보자. NPE(NullPointException) 이란? public static void main(String[] args) { Map map .. Programming/Java 2022. 5. 21. [Vuetify] v-data-table Column Hidden 처리 방법 서론 Vuetify에서 data table의 컬럼을 숨김처리하는 방법에 대한 포스팅이다. 자세한 내용은 Vuetify 공식 홈페이지에 나와있다. 방법 header의 데이터 안에 align : ' d-none'를 붙여주면 된다. 여기서 d-none앞에 공백을 지우면 적용이 안되니 주의할 것. 예제 소스 headers: [ {text: '번호', value: 'noticeNo', align:' d-none'}, {text: '제목', value: 'noticeTitle'} ], 결과 적용 전 적용 후 Vuetify 공식 홈페이지 링크 https://vuetifyjs.com/en/styles/display/#display Display helpers Display helper classes allow you .. Programming/Vue 2022. 5. 20. 이전 1 2 3 4 ··· 6 다음 💲 많이 본 글