일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java I/O
- 동기
- @temproal
- 세션기반 인증
- 비즈니스 계층
- ./gradlew docker
- JPA
- 스프링부트
- ./gr
- 비동기
- IPC
- 로그인 인증 흐름
- Java
- 스프링부트 구조
- 퍼시스턴스 계층
- 작업명중복
- 스프링부트 계층구조
- 스프링 부트 테스트
- 프레젠테이션 계층
- JWT
- ORM
- RESTfull API
- 스프링
- MSA
- spring
- 토큰기반 인증
- formmatted
- 어노테이션
- http
- 로그인/로그아웃
- Today
- Total
목록Back-end/Java (26)
[DEV] J-Jay
예외(Exception)프로그램 실행시, 어떤 원인으로 인해 비정상적인 동작을 일으키며 프로그램이 종료되는 상황이 일어 났을때대부분 사람들은 프로그램이 오류가 발생했다고 생각한다. (어떤 오류인지는 관심 없다) 하지만 나는 개발자니까 개발자 기준에서,오류는 크게 두가지 종류가 있다. 컴파일 할 때 발생할 수 있는 컴파일 에러, 실행 중 발생되는 런타임 에러 컴파일 에러는 우리가 잡기가 쉽지만(코딩할떄 나오니까) 런타임 오류는 실행 중에 발생하기에 잡기가 어렵다.그래서 여기선 런타임 에러에 대해서 깊게 살펴보겠다. 런타임 에러Java에서 런타임 오류는 두종류로 보고있다. 에러(Error)와 예외(Exception)이 두개의 차이를 알아보자.에러는 프로그램이 코드로 복구될 수 없는 오류를 의미하고, 예외는 ..
내부 클래스 (Inner Class) 내부 클래스(inner class)란 하나의 클래스 내부에 선언된 또 다른 클래스를 의미한다.보통 사용자 클래스 자료형이 필요하면, 메인 클래스 외부에 선언하거나, 따로 독립적인 클래스 파일을 만들어 불러와 사용해 왔다. 내부 클래스는 내부에 정의된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 우리가 어느 클래스에 변수나 상수가 필요하다면 클래스 멤버로서 클래스 내에서 선언하여 사용해 왔듯이, 선언 주체를 변수에서 클래스로 바꾼다면 그것이 내부 클래스인 것이다. 이처럼 내부 클래스는 보통 두 클래스가 서로 긴밀한 관계가 있거나, 하나의 클래스또는 메소드에서만 사용되는 클래스일 때 이용되는 기법이라고 보면 된다.※ 내부(inner) 클래스는 중첩(nested) ..
다형성이란?프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. (by.위키피디아) 다형성 예시 UserRepository라는 사용자의 데이터에 대한 인터페이스가 있고,이것의 DB를 초기에는 MySQL로 구현했다고 가정하자.근데 배포하기 하루전 DB를 Oracle로 바꾸는 일이 생겼다고 할때처음부터 다시 개발하지 뭐... 이런상황에서 사용할 수 있는게 다형성이다.interface UserRepository { public createUser() public updateUser() public deleteUser() public getUser()} MySqlclass UserRepositoryMySQ..
상속(Inheritance)자바에서 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소이다.상속은 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드, 이너 클래스)를 하위 클래스와 공유하는 것 부모와 자식으로 생각하면, 자식은 부모의 유전자를 물려받듯, 하위 클래스는 상위 클래스의 모든 멤버를 상속받게 된다.하지만, 모든 멤버를 상속받더라도 항상 직접적으로 접근할 수 있는 것은 아니다. 상위 클래스의 필드나 메서드의 접근 제한자가 private이면, 같은 패키지일 지라도 하위 클래스는 해당 필드나 메서드에 직접적으로 접근하지 못한다. 상위 클래스의 필드나 메서드의 접근 제한자가 default이면, 상위 클래스와 하위 클래스가 다른 패키지일 때 하위 클래스는 ..
텍스트 블록 Java 17 이전 버전에서는 여러 줄의 텍스트를 작성하려면 \n을 추가해야 했지만 이제는 """로 감싼 텍스트를 사용해 여러 줄의 텍스트를 표현할 수 있다. String query11 = "SELECT * FROM \"items\"\n"+ "WHERE \"status\" = \"NORMAL\";"; String query17 = """ SELECT * FROM "items" WHERE "status" = "NORMAL"; """; formatted()메서드 값을 파싱하기 위한 formatted() 메소드를 제공한다. String content = """ { "id" : %d, "name" : %s, } """.formatted(1, "J-Jay"); 레코드 레코드는 데이터 전달을 목적으로 ..
File Class java.io.File 클래스는 파일의 크기, 접근 권한, 삭제, 이름 변경 등의 작업을 할 수 있는 기능을 제공 디렉토리(폴더) 역시 파일로 취급된다 File Class Constructor(생성자) File(File parent, String child) parent 디렉토리에 child 라는 파일에 대한 File 객체 생성 File(String child) child 라는 파일에 대한 File 객체를 생성 ※ 파일 인스턴스를 만들었다고, 실제 파일이 생성되는건 X File Class Method (File permission 권한) boolean canRead() 파일이 읽기 가능할 경우 true 아니면 false boolean canWrite() 파일이 쓰기 가능할 경우 tru..
I/O란? Input & Output(입출력) 입력 : 키보드, 네트워크, 파일 출력 : 화면, 네트워크. 파일 Java I/O도 객체 I/O에서 사용되는 객체는 어떤 대상으로 부터 읽어들여, 어떤 대상에게 쓰는 일을 한다. Java I/O는 Decorator 패턴 1. Component 인터페이스: Decorator 패턴에서 Component는 데코레이션될 객체와 데코레이터 객체에 공통으로 구현할 메서드를 정의 public interface Component { public void operation(); } 2. ConcreteComponent 클래스: Component 인터페이스를 구현하는 구체적인 객체 public class ConcreteComponent implements Component {..
인터페이스 객체 지향 프로그래밍에서 추상화를 통해 코드의 재사용성과 유지보수성을 높이는 기술 중 하나이다. 인터페이스는 메소드의 선언만으로 기능을 정의하고, 이를 구현하는 클래스에서 모든 메소드를 구현해야 한다. 글로만 설명하면 이해가 힘드니 직접 구현을 해보겠다. 예제: 동물 인터페이스 interface Animal { public void makeSound(); } class Dog implements Animal { public void makeSound() { System.out.println("멍멍"); } } class Cat implements Animal { public void makeSound() { System.out.println("야옹"); } } public class Main ..
추상 클래스 ( abstract calss) Java에서 추상 클래스는 abstract 키워드로 정의되며, 일반 클래스와 달리 객체를 직접 생성할 수 없는 클래스이며 상속을 통해서만 사용된다. 상속받은 하위 클래스는 추상 메소드를 반드시 오버라이딩하여 구현해야 한다. 추상 클래스는 객체를 생성할 수 없으므로, 일반적으로 인터페이스와 함께 사용된다. 추상 클래스는 인터페이스와 달리 일부 메소드를 구현할 수 있으며, 추상 메소드도 함께 선언할 수 있다. 추상 클래스 내부에서 선언된 추상 메소드는 메소드 본문(body)이 없으며, 선언부만 존재한다. 추상 클래스는 일반 클래스와 마찬가지로 생성자를 가질 수 있다. 하지만 추상 클래스의 생성자는 하위 클래스에서 생성자를 호출할 때 사용된다. 만약 하위 클래스에서..
Java Generic Generic은 JDK 1.5부터 도입된 기능 중 하나로, 서로 다른 타입의 객체들을 처리할 수 있는 재사용 가능한 코드를 만들 수 있도록 해준다. "Generic" 타입을 정의할 수 있도록 하여, 모든 종류의 객체를 나타낼 수 있도록 해준다. 예를 들어, 다음과 같이 제네릭 타입을 정의할 수 있다. class MyGenericClass { // ... } 여기서 T는 타입 매개변수이다. 제네릭은 클래스이름 뒤나, 메소드의 리턴타입 앞에 붙을 수 있다. 부분은 T라는 이름의 제네릭 타입을 선언한다는 것을 의미한다. T는 Type의 약자기 때문에 많이 사용되는 문자이지 꼭 T를 쓸필요는 없다. (T가 아니라 E나 D등의 단어를 사용해도 된다.) Generic 의 장점 타입 안정성: ..