Java

@DataJpaTest를 어떻게 작성하는지에 대한 기록 JPA 테스트를 위한 의존성 구성 dependencies { implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.mysql:mysql-connector-j") // test container를 위한 의존성 라이브러리 testImplementation("org.springframework.boot:spring-boot..
· 언어/java
특징 인터페이스 기반으로 만들기 때문에 인터페이스가 필수 런타임에 동적으로 프록시 객체를 만들어줌 사용 예시 public static void main(String[] args) { TestInterface ref = (TestInterface) Proxy.newProxyInstance( TestInterface.class.getClassLoader(), new Class[]{TestInterface.class}, handler); ref.call(); } } Proxy.newProxyInstance 동적 프록시 생성 함수 인자 값 프록시 인터페이스의 클래스 로더 인터페이스 클래스에 대한 배열 입력 프록시 동작을 수행하기 위한 InvocationHandler 인터페이스만으로 프록시를 사용할 수 있을까? ..
· 언어/java
서론 JDK 21이 발표됨에 따라 관련 업데이트 내용 정리 JDK 17 이후 최신 LTS 버전 주요 업데이트 내용 Record Patterns Pattern Matching for switch Virture Thread 표준화 Sequenced Collection Unnamed Classes and Instance Main Methods Unnamed Patterns and Variables Record Patterns Record 타입에 대한 destructed가 가능해졌다. 패턴 매칭 // As of Java 16 record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p...
[SimpleJpaRepository] findAll() 메서드에서 getQuery 호출을 통해 Query 객체를 가져온다. 이 객체는 Hibernate를 통해 객체를 쿼리 형식으로 만들어주는 역할을 한다. Query 객체를 가져오는 과정에 대해서는 따로 작성하는게 좋을 것 같아서 배제하게 되었다. Query 객체에서 getResultList()를 호출하여 타입에 해당하는 결과 목록을 조회한다. [Query] list() 함수를 통해 가져오게 되는데, 이는 Query를 구현한 AbstractSelectionQuery 클래스에 있다. [AbstractSelectionQuery] 메서드 내부에서 doList()를 조회하는데, 이는 AbstractSelectionQuery를 구현한 QuerySqmImpl 클래..
작성 계기 지난 리팩토링 프로젝트에서 Spring Boot 3로 업그레이드 하면서 JDK 17로 바꾸게 됐는데, 이에 따라 여러 Dependencies를 고치게 되었다. 이에 따라 다양한 이슈가 발생했었는데, 가장 기억에 남았던 이슈라 글로 정리 해 본다. 이슈 사항 Kotlin Entity 에서 @OneToMany List fundImageList 형식으로 사용하는 곳에서 RuntimeExecption 발생 MutableList로 고치니 잘 동작 => 이대로 끝나면 발전 가능성이 없는 것이다. 무엇이 문제였을까? 공변성과 반공변성 Effective Java와 Kotlin In Action에서 공변 / 반공변에 대해 학습했었는데 와닿지 못 했었던 내용이라 그냥 달달 외웠었다. 지금 이슈가 발생했던 부분은..
작성 계기 Web3를 통한 프로젝트의 경우 truffle / hardhat 등의 Smart Contract을 위한 대중성있는 블록체인 프레임워크가 존재한다. Java에서도 Web3j 모듈에서 다양하게 지원하긴 하지만, Web3 프로젝트에 비해 그 과정이 상당히 복잡하고 러닝커브가 높다. Web3에 비해 커뮤니티 풀이 생각 외로 적고, 프로젝트 전체 플로우에 대해 참조할만한 블로그도 없어서 직접 작성하게 됐다. 사용 스택 Spring Boot 2.7 & Gradle 7.0 JDK 11 Solidity 0.8.19 위 기술 스택으로 사용한 이유 Gradle 8.0 이상의 프로젝트 (JDK 17 / Spring Boot 3.0)에서는 아직 지원이 안 되는듯하여 이슈로 올라와있다. Solidity 0.8.20 ..
간단한 Rest Docs 작성 예시 [build.graddle.kt] plugin { id("com.epages.restdocs-api-spec") version "0.17.1" } configure { setServer("http://localhost:9999") title = "Rest API 문서" description = "Rest API 문서" version = "0.1.0" format = "yaml" outputDirectory = "build/docs" outputFileNamePrefix = "rest_docs" } val asciidoctorExtensions: Configuration by configurations.creating dependencies { testImplementa..
서론 사내 클라우드 서비스 모니터링 관련 프로젝트를 시작하게 되면서 Naver / KT / AWS 클라우드를 연동하게 되었다. 대중적인 AWS와는 달리 네이버와 KT는 예시 코드가 부족하여 직접 삽질하면서 얻은 결과물을 정리해야겠다고 판단하여 작성하게 되었다. API 연동 api 연동은 Rest API와 네이버 클라우드 공식 가이드를 참고하여 진행했다. [네이버 클라우드 API 가이드 홈페이지] 기본적인 signature 만드는 방식에 대해서는 가이드 문서에 자세하게 설명되어 있으니 가이드 문서 참고! Java 예시 코드 @Autowired protected RestTemplate restTemplate; /** * ncloud 서버 리스트를 조회한다. * * @return Map * @author Ch..
iron_jin
'Java' 태그의 글 목록