여니의 프로그래밍 study/Java 21

[SpringBoot] Lombok : Cannot find method 'value'

카카오 소셜 로그인 기능을 구현하면서 코드 리팩토링보다 기능이 돌아가는 게 우선이었기에 중요한 clinet id, secret key 등을 클래스 파일에 하드코딩했다. 이제 기능이 잘 돌아가는 걸 확인하고 중요한 보안 정보들은 application.yml에 옮기고자 클래스 내용을 위처럼 변경했다. 그런데 value 인식을 제대로 진행하지 못하는 에러가 발생했고 서칭해본 결과 import가 잘못 되어 발생한 에러였다. 현재는 Lombok.value로 선언되어 있으나 아래와 같이 선언이 되어있어야 에러문구가 뜨지 않는다. import org.springframework.beans.factory.annotation.Value;; (참고 자료) https://velog.io/@dabeen-jung/cannot-..

[인텔리제이] 주석 색상 변경 및 커스텀마이징 (feat. TODO, FIXME, NOTE ... )

주석을 커스텀마이징하여 한 눈에 알아보기 쉽도록 설정하는 방법을 정리하였다. (추후 나중에 참고하기 위해) 이렇게 따로 정리해두지 않으면 또 나중에 똑같이 방법 찾느라 시간을 허비하게 돼서 이를 방지하고자 글을 작성함. TODO, FIXME는 기본으로 설정이 되어있고 NOTE만 따로 더 추가했다. Patterns 부분에서 원하는 주석 항목을 더블크릭하여 Use color scheme ~ 체크를 해제한 후에 Foreground에서 원하는 색상을 설정한다 그리고 Filters에 방금 만든 항목을 추가해준다 사용법은 아래와 같다.

[인텔리제이] finished with non-zero exit value 1

인텔리제이에서 코드를 작성하고 실행을 시키니까 아래와 같은 에러 문구가 뜨면서 실행이 되지 않았다. > Process 'command '/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 맥 기준으로 Intellij IDEA > settings > Build~ > Build Tools > Gradle Build and run using, Run tests using을 Intellij IDEA로 변경 후 적용! 위처럼 하면 해결된다고 했지만 나는 해결되지 않았다 그래서 자바 버전을 살펴보았다 > java -version 버전을 11로 변경해도 (Gradl..

error: non-static method <S>save(S) cannot be referenced from a static context

소셜 로그인 회원가입 (카카오)를 구현하는 도중 MemberService 파일 내에서 save 메소드쪽에 빨간 에러가 떴다.. 실행을 해서 돌려보니 아래와 같은 에러문구가 등장했다. error: non-static method save(S) cannot be referenced from a static context 알고 봤더니 memberRepository.save로 선언해야 하는데 MemberRepository.save로 기재해서 생긴 에러였다. ㅎ 해당 클래스를 new 로 객체화한 후에 non-static 메소드들을 호출할 수 있는데 객체화하지 않고 메소드를 호출하여 생긴 에러였다.

[Java] 예외처리

오류 종류 1. 컴파일 에러 : 컴파일 시 발생하는 에러 컴파일러가 오타나 잘못된 구분, 자료형 체크 등의 기본적인 검사를 수행함 (소스코드의 기본적인 사항 점검) 그러나 실행 중 발생할 수 있는 잠재적인 오류는 잡아내지 못함. 2. 런타임 에러 : 실행 시 발생하는 에러 실행 중 무한 로딩에 걸린다던지, 갑자기 프로그램이 종료된다던지. 3. 논리적 에러 : 실행은 되지만, 의도와는 다르게 동작하는 에러 에러 발생 시, 프로그램의 비정상적인 종료를 막을 길은 없다. 하지만, 예외는 발생하더라도 비정상적인 종료를 막을 수 있다. 에러 : 프로그램 코드에 의해 수습될 수 없는 심각한 오류 예외 : 프로그램 코드에 의해 수습될 수 있는 다소 미약한 오류 예외처리하기 - try ~ catch 문 JVM의 예외처..

[Java] 추상클래스 및 인터페이스

1. 추상클래스 : 해당 클래스에는 추상 메서드가 있으니 상속을 통해 구현해주어야한다. 추상클래스는 미완성 설계도여서 인스턴스를 생성할 수 없다. 즉, 추상 클래스는 상속을 통해 자손클래스에 의해서만 완성될 수 있다. 선언부만 작성하고 구현부는 작성하지 않은채로 남겨둔 것이 추상 메서드. abstract class 클래스명{ ... } // 예시 abstract class Player{ abstract void play(int pos); abstract void stop(); } class AudioPlayer extends Player{ void play(int pos) { ... } void stop() {...} } abstract class AbstractPlayer extends Player{ ..

[Java] 패키지 및 import

1. 패키지 : 패키지는 클래스의 묶음이다. 클래스 또는 인터페이스를 포함시킬 수 있고 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 예를 들어 java.lang.String 구문은 java.lang 패키지에 속한 String 클래스라는 의미이다. 정확히는 디렉토리 java의 서브 디렉토리 lang 안에 있는 String.class 파일이다. 2. 패키지 선언 package 패키지명; 3. import 문 : 사용하고자 하는 클래스의 패키지를 미리 명시해주면 패키지명 생략이 가능하다.

[Java] 자바 프로그램 실행 과정 및 동작 원리 (feat. JVM)

1. 컴파일이란? (Compile) : 컴파일은 사람이 이해할 수 있는 언어로 작성된 코드를 컴퓨터가 읽을 수 있는 언어(기계어)로 변환하는 과정을 의미한다. 컴파일의 목적은 코드의 구문과 의미를 확인(ex. 오류코드 확인) 하고 최적화를 수행하며 효율적이고 JVM에서 실행하기에 적합한 바이트코드를 생선한다. 컴파일은 Java 컴파일러(javac) 또는 통합 개발 환경(IDE)에서 수행한다. 2. .java 파일 vs .class 파일 (1) .java 파일 : Java 언어로 작성된 소스 코드 파일이다. 즉 컴파일 되기 전의 소스 파일 (2) .class 파일 : Java 컴파일러에 의해 생성된 컴파일된 바이트코드 파일이다. 자바 가상 머신(JVM)에서 이해하고 실행하는 바이트코드 명령이 포함되어 있다..

[Java] 제어자

목차 제어자 : 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여함 접근 제어자 public, protected, default, private 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp static : '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 클래스 변수는 인스턴스를 생성하지 않고도 사용 가능하다. final : '마지막의' 또는 '변경될 수 없는'의 의미를 가지고 있다. 변수에 사용되면 값을 변경할 수 없는 상수가 된다. 대표적인 final 클래스로는 String과 Math가 있다. abstract : '미완성'의 의미를 가지고 있다. 메서드의 선언부만 작성하고 실..