공부/자바
-
flyway공부/자바 2023. 8. 27. 16:25
flyway db 마이그레이션 툴 사용이유 매번 db에 직접 들어가서 테이블을 수정하기에는 번거로우며, 실수하기 쉬움 또한 개발환경이 다를 경우 실수하기 쉬움 동작방식 데이터 베이스가 없는 경우, flyaway가 만들어 준다. 데이터베이스가 있는 경우, flyway는 버전별로 파악하여 히스토리를 체크하여 마이그레이션 해준다. 버전은 오름차순이며, 새로운 버전에서 테이블을 삭제시 삭제가 적용되고, 추가시 추가가 적용된다. 하지만 만약 버전4를 작성 후, 버전 2.2를 작성하면 버전 2.2는 적용이 안된다. 또한 각각의 버전은 유니크 하여 같은 버전이 있으면 안된다. 위에서 마이그레이션한 db에 대한 정보가 flyway_schema_history에 작성된다. 이름규칙 앞에 Prefix에는 V, U, R이 들..
-
Java Records공부/자바 2023. 7. 31. 00:04
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 레코드는 변경 불가능한 데이터를 투명하게 보유하는 클래스로 Java 언어를 강화한다. 레코드는 명목적인 튜플로 생각할 수 있다. 목표 간단한 값들의 집합을 표현하는 객체 지향적인 구조를 설계한다. 개발자가 변경 불가능한 데이터 모델링에 집중할 수 있도록 도와준다. 확장가능한 동작보다는 데이터 중심의 메서드를 자동으로 구현한다. equal와 접근자 같은 데이터 기반 메서드를 자동으로 구현한다. 명목적 유형과 이전의 Java 원칙을 보존한다. 동기 데이터 운반자 클래스를 올바르게 작성하려면 생성자, 접근자, equals, hashCod, toString 등 많은 저가가치, 반복적이고 오류가 발생하기 쉬운 코드로 작성하게 된다. ..
-
자바 instanceof공부/자바 2023. 7. 29. 22:08
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 instanceof 연산자에 대한 패턴 매칭 기능으로 향상시킨다. 패턴 매칭은 프로그램에서 일반적으로 사용되는 로직인 객체로부터 조건부로 구성 요소를 추출하는 작업을 보다 간결하고 안전하게 표현할 수 있다. 동기 거의 모든 프로그램은 특정 유형 또는 구조를 가진 표현식을 테스트하고, 그 상태의 구성 요소를 조건부로 추출하여 추가 처리하는 로직을 포함한다. if (obj instanceof String) { String s = (String) obj; ... } 여기에서 3가지 작업이 진행되는데 테스트, 변환, 새로운 로컬 변수 선언이다. 이는 여러가지 이유로 최적화 되지 않아 오류가 발생 할 수 있다. 이러한 해결책을 찾는 ..
-
외부함수와 메모리 API공부/자바 2023. 7. 29. 19:54
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 자바 런타임 외부의 코드와 데이터를 자바 프로그램과 상호운용하기 위해 JDK 14와 JDK 15에서 도입된 인큐베이팅 API가 개선되었다. 해당 API는 외부 함수(즉 JVM 외부의 코드)를 효율적으로 호출하고 외부 메모리에 안전하게 접근하도록 한다. 이를 통해 자바 프로그램이 네이티브 라이브러리를 호출하거나 네이티브 데이터를 처리하는 과정에서 발생 가능한 JNI(Java Native Interface)의 불안정성과 복잡성을 방지한다. 이 API는 다른 언어로 작성된 코드와 자바 사이의 상호작용을 개선하는 프로젝트 파나마(Project Panama)에서 개발되고 있다. 목표 편의성: Java Native Interface를 ..
-
switch를 위한 패턴 매칭공부/자바 2023. 7. 29. 18:27
개별 작업이 할당된 다양한 패턴을 테스트하는 switch 구문을 허용한다. 목표 기존의 switch 표현식과 문장이 변경 없이 컴파일 되고 동일한 의미로 실행될 수 있도록 switch 표현식과 문장의 표현력과 적용 가능성을 확장하기 위해, case 라벨에 패턴을 사용할 수 있도록 한다. 또한, 필요한 경우 switch의 기존 null 방어성을 완화시킨다. 두 가지 새로운 패턴 유형을 도입한다: 먼저, guarded patterns로 임의의 부울 표현식을 사용하여 패턴 매칭 로직을 더 정교하게 할 수 있다. 또한 괄호로 둘러싼 패턴을 도입하여 몇 가지 구문 분석 모호성을 해결한다. 기존의 switch 표현식과 문장이 case 라벨이 패턴인 경우와 기존 상수인 경우에 대해 동일한 방식으로 동작하도록 보장한다..
-
17 preview version 안되는 오류공부/자바 2023. 7. 29. 15:09
JDK 다음 버전 미리보기에 있는 switch문을 실행하려 보니 A problem occurred evaluating root project 'JDK17'. > No such property: VERSION_17_PREVIEW for class: org.gradle.api.JavaVersion 위와 같은 에러가 발생을 한다. build.gradle에 있는 JavaVersion.VERSION_17_PREVIEW에서 에러가 발생하는 것이다. 아래와 같이 수정하면 에러가 사라진다.
-
JDK 내부의 강력한 캡슐화공부/자바 2023. 7. 27. 23:33
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 JDK 9~16까지 단일 커맨드 라인 입력을 통해 가능했던 내부 구성 요소의 강력한 캡슐화 해제가 차단된다. 커맨드 라인 매개변수나 JAR manifest 파일의 속성을 이용하여 강력한 캡슐화를 해제하고자 하는 패키지 목록을 지정해야 한다. 목표 JDK의 보안 및 유지보수성을 지속적으로 개선한다. 개발자가 내부 요소 사용에서 표준 API 사용으로 마이그레이션하도록 권장하여 개발자와 사용자 모두 번거로움 없이 향후 Java 릴리즈로 업그레이드 할 수 있다. 동기 수년 동안 개발자는 JDK 내부 요소를 보안과 유지 관리성을 모두 손상시키는 방식으로 사용했다. Java 9에서는 내부 요소에 대한 접근을 제한하는 강력한 캡슐화를 제..
-
스프링부트 웹레이어에서 테스트공부/자바 2023. 7. 27. 22:57
" data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 간단한 Spring 애플리케이션을 만들고 JUnit으로 테스트한다. Spring Test와 Spring Boot 기능을 사용하여 Spring과 코드 사이의 상호작용을 테스트한다. 먼저 애플리케이션 컨텍스트가 성공적으로 로드되는 간단한 테스트로 시작하고, 이어서 Spring의 MockMvc를 사용하여 웹 레이어만을 테스트한다. Spring Initializr로 시작하기 https://start.spring.io 로 이동한다. 이 서비스는 애플리케이션에 필요한 모든 종속성을 가져오고 대부분의 설정을 자동으로 해준다. Gradle 또는 Maven 중에서 선택하고 사용하려는 언어를 선택한다. Dependencies를 클릭하고 Spr..