목록Java (22)
영호

들어가면서,최근에 같이 우테코를 수료한 지인과 각자 실무를 하면서 기본기를 다시 다지기 위해 Spring 스터디를 시작했습니다. 스터디원이 ConfigurationProperties 관련해 흥미로운 점을 알려줬고, 관련해서 조금 더 파본 내용을 간단하게 정리한 글입니다.실험을 진행한 환경은 Spring Boot 3.x 버전입니다. 궁금한 점꼭 설정 파일의 key 값과 java 코드의 필드명이 같아야 될까? HikariConfig 를 보면 maxPoolSize 란 필드가 있습니다. 그러나 설정파일 에서는 maximum-pool-size 키 값을 사용해 우리가 원하는 값을 주입 해줍니다. 즉, 설정 파일의 key 값과 자바 코드의 필드명이 달라도 매핑이 됩니다. 그래서 이를 확인해보기 위해 직접 코드를 쳐봤..

SimpleJdbcInsert란 기존 JdbcTemplate를 이용한 Insert보다 손쉽게 데이터를 저장하기 위해 제공하는 구현체다. 데이터 저장 후 primaryKey를 알고 싶은 경우 SimpleJdbcInsert를 이용해 keyHolder없이 구현할 수 있다. SimpleJdbcInsert와 JdbcTemplate제공 기능 차이 SimpleJdbcInsert SimpleJdbcInsert는 데이터를 저장하기 위한 기능만 제공하기 위해 SimpleJdbcInsertOperations를 구현하고 있다. execute() executeAndReturnKey() withTableName() 등등... JdbcTemplate JdbcTemplate은 데이터 저장뿐만 아니라 조회, 삭제, 업데이트 등의 기능..
개요 우아한테크코스 프롤로그 학습로드맵에 있는 다형성에 대해 공부한 내용을 정리해 보겠습니다 :) 다형성? 단어만 보면 "다양한 형태를 가질 수 있는 성질인가?"라는 생각이 먼저 들었습니다. 위키백과를 보면 다형성을 아래와 같이 설명하고 있습니다. 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 즉, 하나의 객체, 메서드에 다양한 타입들을 갈아 끼울 수 있는 객체지향의 특징이다. 이렇게 말만 보면 잘 이해가 가지 않으니 코드로 적용해 보겠습니다. 다형성을 구현하는 방법에는 오버로딩, 오버라이딩도 있지만 이 글에서는 인터페이스를 통한 다형성에 대해 살펴보겠습니다. 인터페이스를 통한 다형성 고스톱을 할 때, 패를..
동일성 두 객체가 물리적으로 같은 주소에 저장되어 있는지에 대한 성질로 ==연산자를 통해 동일성을 비교할 수 있습니다. 동등성 두 객체의 필드값이 같은지에 대한 성질입니다. 두 객체의 필드 값이 같다면 두 객체는 논리적으로 동등하다고 할 수 있고, equals()를 통해 비교 가능합니다. 객체 비교 방법 우리는 객체가 같은지 비교할 때 equals()를 사용한다. 그 이유는 ==은 객체의 주소를 비교해 두 객체가 동일한지 물리적 동일성을 비교한다. equals()는 객체의 주소가 아닌 내부 필드값들이 같은지 논리적 동등성을 비교한다. 이제부터 equals를 쓰기 위해 equals, hashCode에 대해 알아보겠습니다. equals와 hashCode를 재정의 하면 contains에서도 이점을 볼 수 있습..
개요 Enum을 활용하다 보면 filed값을 이용해 Enum 인스턴스를 조회해야 하는 경우가 있습니다. 이때, Stream, HashMap 등을 사용할 수 있습니다. 이 글에서는 HashMap을 활용한 Enum인스턴스 조회 방법을 알아보겠습니다. HashMap활용 코드 package enumPractice; import java.util.Arrays; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; public enum Number { ONE(1), TWO(2), THREE(3); private final int number; Number(int number) { this.number ..
개요 4주 간의 프리코스가 끝나면서 소감을 정리해보려고 합니다. 4주 간의 소감 프리코스를 진행하기 전 저는 객체지향에 대한 감이 없었습니다. 4주 동안 의식적인 연습을 통해 미션을 수행하면서 메서드를 분리하고, 클래스를 분리하고, 코드 컨벤션을 지키려고 노력했습니다. 그러다 보니 1주 차에 어색했던 부분이 2주 차에서 보다 능숙해지고 2주 차에 어색한 부분이 3주 차에는 보다 능숙해지는 경험을 할 수 있었습니다. 프리코스를 마치고 1, 2주 차의 코드를 보면 정말 리팩터링 할 요소가 너무 많이 보입니다. 그만큼 프리코스 기간 동안 성장한 거 같아 기쁘고, 앞으로도 다른 기수의 프리코스 내용을 연습하면서 계속해서 역량을 키워나갈 예정입니다. 4주 동안 힘들기도 했지만, 많은 성장을 할 수 있어서 보람 있..
개요 3주 차 미션에서는 로또 게임이 나왔습니다. 미션을 진행하면서 있었던 일들에 대해 작성해보겠습니다. 신경 썼던 점 자율적인 객체 만들기 테스트하기 좋은 코드 작성 연관관계와 의존관계 분리 자율적인 객체 캡슐화를 위해 객체가 자신이 가지고 있는 정보에 대한 책임을 가지게 함으로써 응집도를 높이고 결합도를 낮추고 싶었습니다. 왜냐하면 프리코스를 진행하면서 읽은 책, 구글링, 세미나 영상 등 모두 좋은 객체지향 설계를 위해서는 응집도를 높이고 결합도를 낮춰야 한다는 내용을 설명하며 캡슐화가 빠지지 않았습니다. 물론 2주 차 미션에서도 해당 내용을 지키기 위해서 노력했지만, 지속적인 노력을 통해 실력을 키우고 싶었습니다. 이 과정에서 로또 당첨 순위를 판별하는 책임을 전체 로또 정보를 가지고 있는 Enti..
개요 1주 차에는 코딩 테스트 형식의 문제들이 나왔고, 2주 차에는 프리코스를 검색해보면 항상 나오는 숫자 야구 게임이 나왔습니다. 1주 차 미션을 진행하면서 무엇을 신경 쓰면서 진행했는지 정리해보겠습니다. 무엇을 신경 썼는가 데이터 중심이 아닌 책임에 중심을 둔 설계 캡슐화 객체에서 외부에 공개할 메서드와 내부에 감출 메서드 책임에 중심을 둔 설계 그동안 저는 DB, 애플리케이션을 설계할 때 구현해야 하는 기능을 보고 '이런 데이터가 있어야겠네'라고 생각하면서 설계를 해왔습니다. 그러나 객체 지향적인 설계를 위해선 데이터 중심이 아닌 구현해야 하는 기능을 수행할 적절한 객체를 찾고, 구현 시점에서 필요한 데이터가 무엇인지 생각해야 된다는 내용을 알게 됐습니다. 그래서 저는 구현해야 하는 기능 목록을 정..