본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

java25

[이클립스] lombok 인식 안되는 이유 이클립스로 개발하는데 빌드 툴에서 dependency로 lombok을 불러올 수 있습니다. lombok을 빌드해서 실행하는데 문제는 없지만, IDE에서 lombok 인식을 못하는 에러가 발생합니다. 그럴땐 IDE에 lombok을 직접 추가해줘야 하는데, 다음 사이트에서 lombok을 다운로드 받아줍니다. https://projectlombok.org/ Project Lombok projectlombok.org 다운로드 받은 뒤 실행하면, eclipse 가 설치된 경로를 찾아준다. 뒤에 Install / Update 를 누르면 설치가 완료되며, 프로젝트를 열 고 나서 rebuild를 해주면 됩니다. 그 뒤엔 lombok이 인식 잘 되었습니다. 혹시 안된다면 댓글 남겨주길 바랍니다. 도움드릴 수 있으니. 2023. 6. 13.
[spring] 예외처리 @ControllerAdvice, @ExceptionHandler를 이용한 예외처리 분리, 통합하기(Spring에서 예외 관리하는 방법, 실무에서 활용하는 방법) 예외 처리 과정 프로그래밍에서 예외 처리는 아주 중요하면서도 아주 어렵다. 과하다할 만큼 상세하고 다양하게 예외를 잡아 처리해준다면, 클라이언트도 그렇고 서버도 그렇고 더 안정적인 프로그램이 될 수 있게 도와준다. 예외 처리를 하는 경우와 방법은 다양하다. 메서드 내에서 예외 상황을 예측해서 처리하는 try-catch문을 이용하는 방법 요구사항에 의한 예외 처리 (ex. validation > 특정 값이 0~255범위가 아니면 유효하지 않은 값으로 판단하고 예외 처리) 스프링 시큐리티에서 인터셉터로 잡아서 UnauthorizedException 같은 예외 처리 기타 여러 예외 처리들을 적용하다보면 코드가 엄청나게 복잡해진다. if문으로 잡든 try-catch로 잡든 상위 메서드로 예외처리를 위임하든 코드.. 2023. 6. 8.
[JAVA] 자바의 다중상속 (인터페이스와 추상클래스) 알고 시작해야 할 내용 1. 자바에서 클래스의 다중 상속은 불가능하다. 2. 하지만 인터페이스의 다중 상속은 가능하다. 인터페이스와 추상 클래스를 사용하는 이유 설계시 인터페이스와 추상클래스를 미리 선언해두면 개발시 기능 구현에만 집중할 수 있다. 개발을 할 때, 패키지 명명 규칙이나 메소드 선언 등 기존에 생각해야할 부분들이 있는데, 인터페이스나 추상클래스대로 이용 하다보니, 개발자는 비즈니스 로직에만 집중할 수 있게 된다. 공통의 인터페이스와 추상 클래스를 선언해두면, 선언과 구현을 구분할 수 있다. 그럼 인터페이스만 있으면 되지, 추상 클래스는 왜 필요한가? 인터페이스를 선언하다보니 어떤 메소드는 미리 선언 해놓을 필요가 있다. 그럼 직접 클래스를 만들면 되지 않나 싶지만 해당 클래스까지 만들기엔 .. 2023. 6. 8.
[JAVA] 상속 (Inheritance), extends와 implements 개발에서 상속이라는 용어가 있다. 부는 되물림 되고, 이어지는걸 당연시하는듯 공교롭게도 상속이란 단어가 사용되는데, 부에서 사용하는 상속과는 다르다. 개발에서 상속이 무엇이고, 왜 쓰이고, 어떻게 쓰이는지 정리해보려 한다. - 개발에서 상속이 무엇인가? 누군가(보통 부모) 죽기전 가족, 자식에게 재산을 나눠준다. 이걸 받는것을 상속이라고 하는데, 개발에선 부모클래스가 가진 변수나 메소드를 물려받아 알아서 구현시키고, 사용하거나 변형시켜 사용할 수 있다. 능력의 되물림이라고 보면 된다. - 개발에서 상속을 왜 사용하는가? 개발하면서 상당히 많은 기능들이 만들어져 있는데, 이를 간단하게 불러오기 위함이다. 에러처리나, 입력, 그외 요구사항에 따라 만들어진 기능들을 직접 개발하지 않고 원하는 소스에서 상속받게.. 2023. 5. 26.
[JAVA] JAVA에서 JSON 사용하기 - JSONObject, JSONArray java에서 json 형식을 담는 객체가 있을까? 별도 외부 라이브러리를 통해 사용할 수 있다. https://mvnrepository.com/artifact/org.json/json dependency를 통해 라이브러리를 지원해도 되나, 라이브러리를 다운로드 받아 사용해도 된다. 아래와 같은 데이터를 만들고 싶을 경우 라이브러리를 추가했다면 JSONArray, JSONObject 객체를 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import org.json.JSONArray; import org.json.JSONObject; import lombok.extern... 2023. 5. 9.
[JAVA] map 맵 hashmap 사용 방법 - linkedhashmap, hashtable 설명 맵(Map)은 사전(dictionary)과 비슷하다. people 이란 단어에 "사람", baseball 이라는 단어에 "야구"라는 뜻이 부합되듯이 Map은 Key와 Value를 한 쌍으로 갖는 자료형이다. map에는 hashmap과 hashtable로 나뉘는데 hash라는게 붙어 혼돈을 준다. 해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 색인(인덱스) 또는 주소삼아 데이터를 key와 함께 저장하는 자료구조라서 이름에 hash를 붙인다고 한다. 해시 함수(hash function) 또는 해시 알고리즘(hash algorithm) 또는 해시함수알고리즘(hash函數algorithm)은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수다. 해시 함수에 의해 얻어지는 값은 해시 값, 해.. 2023. 5. 9.
[JAVA] 리스트 List ArrayList 사용 방법 리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다. 리스트와 배열의 가장 큰 차이는 배열은 크기가 정해져 있지만 리스트는 크기가 정해져 있지 않고 동적으로 변한다는 점이다. 선언할 때 크기를 정해서 선언할 필요가 없으므로 크기의 제한에서 자유롭다. ArrayList List 자료형은 ArrayList 뿐만아니라 여러가지가 있다. 여기선 ArrayList만 다루려 한다. add ArrayList에 값을 추가할 때 사용한다. import java.util.ArrayList; import java.util.List; import lombok.extern.slf4j.Slf4j; @Slf4j public class ListSample { public static void main(.. 2023. 5. 8.
[JAVA] 배열 array 배열을 자바에서 쓰려면 Array 선언이나 사용방법을 알아둬야 한다. 배열이란 자료형의 종류가 아닌 자료형의 집합을 의미한다. 배열은 자료형 타입 바로 옆에 [] 기호를 사용하여 표현한다. 아래 예제와 같이 int 자료형의 배열은 int[] 로 표현한다. int[] arr = {12, 24, 35, 37, 49}; 요일의 집합은 다음과 같이 String 배열로 표현 할 수 있다. String[] weeks = {"월", "화", "수", "목", "금", "토", "일"}; 위에서 살펴본 요일의 집합은 다음과 같이 고쳐 쓸 수 있다. String[] weeks = new String[7]; weeks[0] = "월"; weeks[1] = "화"; weeks[2] = "수"; weeks[3] = "목"; .. 2023. 5. 8.
[JAVA] 여러 데이터를 저장하는 객체, array, map, list, 자바를 쓰다보면 여러 데이터를 저장하여 사용하는 array 배열 map 맵 list 리스트 를 자주 접하게 된다. 위 객체들을 쓰는 이유는 특정한 데이터의 집합을 다루기 위해서다. 목적을 가진 데이터들을 개별로 추가나 변경을 하는데 상당히 많은 변수들을 생성해야 한다면 개발이 어려워 질 것이다. 성격에 따라 객체를 생성하여 여러 데이터들을 쉽게 다룰 수 있는 장점이 있기에 자주 쓰이는 편이다. 상세히 구분하자면 배열, Collection, Map 으로 구분된다. 쨋든 이중에서 내가 자주쓰는 Array, Map, List에 대해 정리해 두려 한다. 쓰다보면 각자 방법이 달라 자주 잊어버리고 혼동이 오기 때문이다. https://teck10.tistory.com/322 [JAVA] 배열 array 배열을 자.. 2023. 5. 8.
오버로드(Overload)와 오버라이드(Override)의 차이점 오버로드(Overload) 메서드의 이름은 같고 파라메터의 갯수나 타입이 다른 함수를 정의하는 것을 의미한다. (리턴값만을 다르게 갖는 오버로드는 작성 할 수 없다.) 오버라이드(Override) 상위 클래스의 메서드를 재정의 하는 것이다. 메서드의 이름은 물론 파라메터의 갯수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용된다. 오버로딩(Overloading)은 기존에 없던 새로운 메서드를 정의하는 것이고 오버라이딩(Overriding)은 상속 받은 메서드의 내용만 변경 하는 것이다. 2023. 4. 4.
카멜표기법 camelCase, 파스칼표기법 PascalCase 1. 카멜 표기법 "camelCase" 각 단어의 첫문자를 대문자로 표기하고 붙여쓰되, 맨처음 문자는 소문자로 표기함 띄어쓰기 대신 대문자로 단어를 구분하는 표기 방식 예시: backgroundColor, typeName, iPhone 2. 파스칼 표기법 "PascalCase" 첫 단어를 대문자로 시작하는 표기법 예시: BackgroundColor, TypeName, PowerPoint 2018. 10. 30.
The type Date is ambiguous 에러 The type Date is ambiguous java.util 을 import 시키지 않으면 d = newDate(); 이 문장에서 오류가 나고 DB 연동을 해야 해서​ java.sql과 java.util을 동시에 import 시키면 위와 같은 오류가 난다. 이유는 java.util.Date와 java.sql.Date 클래스 둘다 참조하기 때문에 어떤 Date를 써야할지 모르기 때문이다. ​ 그래서 import에서 두 패키지를 import 할 경우 클래스 선언 부분에서 패키지 까지 정의해주면 정상적으로 나온다. java.util.Date d = new java.util.Date(); ​또는 java.sql.Date d = new java.sql.Date();​ import시 사용하는 클래스만 impo.. 2018. 10. 28.