본문 바로가기

Java & Kotlin & Spring5

i18n을 도입하여 다국어(국제화) 서비스 제공 다국어 지원 서비스 개발 국내뿐만 아니라 해외에서도 서비스를 운영한다면 다국어 제공이 필수적이다. '주문' 기능을 담당하는 버튼은 영어로 'Order', 일본어로 '呪文'라고 보여야 할 것이다. 이를 위해 각 국가별 웹 사이트를 만드는 것은 좋은 방법일까? '주문'이라는 기능이 다른 이름으로 대체된다면 모든 국가별 소스 코드를 수정해줘야 한다. 만약 놓치는 국가가 있다면 큰일이다. i18n (w. Java & Spring) 다국어 서비스를 제공하기 위해서 많은 개발자들이 i18n 라이브러리를 사용한다. 전체 이름은 internationalization(국제화)이며 맨 앞 i, 맨 뒤 글자 n 사이에 18글자가 있다는 의미로 i18n이라고 부른다. 대표적으로 React 진영에선 i18n-next, Angu.. 2023. 10. 4.
스프링 ServiceLocatorFactoryBean으로 팩토리 메소드 패턴 구현 팩토리 메서드 패턴 올해 초 팩토리 메서드 패턴에 대한 글을 쓴 적이 있다. 다시 설명하자면, 객체 생성을 캡슐화하여 서브클래스에서 어떤 클래스의 인스턴스를 생성할지 결정권을 넘겨주는 패턴이다. 객체 생성을 추상화하여 서브클래스마다 다른 구상 클래스의 인스턴스를 생성하기 위해 사용한다. @Setter @Getter @MappedSuperclass public abstract class BaseEntity { private String email; private LocalDateTime createdAt; } @Entity @Getter @Setter public class Member extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType... 2023. 8. 23.
반복되는 필드를 모아 Entity를 만드는 @MappedSuperClass 반복되는 필드 재사용 Entity를 만들다 보면 createdAt, createdBy, updatedAt 그리고 updatedBy 등 반복되는 필드가 존재한다. 앞서 나열한 요소뿐만 아니라 서비스에 따라 Entity마다 공통되는 필드가 생기는 경우가 많다. 주소와 같이 우편번호, 지번 등이 포함되는 서비스도 해당될 수 있다. @Entity @Getter @Setter public class Member { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "member_seq") @SequenceGenerator(name = "member_seq", sequenceName = "member_sequence", allocationSiz.. 2023. 8. 16.
flatMap과 map 구분해서 사용하기 flatMap과 map은 둘 다 함수형 프로그래밍에서 사용되는 메소드로 컬렉션 내부의 요소들에 대해 변환 작업을 하는 데 사용한다. map map은 'A를 B로 바꾼다' 한마디로 정리할 수 있다. 컬렉션의 각 요소를 주어진 조건에 따라 변화시키고 새로운 컬렉션을 반환한다. 원래의 컬렉션과 동일한 크기를 가진다는 것이 특징이다. flatMap과 비교해보면 크기의 의미가 무엇인지를 알 수 있다. val numbers = listOf(1, 2, 3, 4, 5) val squares = numbers.map { x -> x * x } // [1, 4, 9, 16, 25] 정수 1, 2, 3, 4, 5가 들어있는 컬렉션의 요소들을 제곱하고 싶다면 map을 이용하면 된다. A -> B로 바꾸는 것이 map이기 때문.. 2023. 3. 23.
Mac에서 JDK 제거하기 JDK8을 설치했다가 JDK11을 사용할 일이 있어서 기존 Kit를 제거하기로 했다. $ cd /Library/Java/JavaVirtualMachines/ $ ls $ sudo rm -rf jdk1.8.0_341.jdk JDK가 존재하는 경로로 이동하여 sudo 명령어로 강제 삭제 해준다. $ java -version The operation couldn’t be completed. Unable to locate a Java Runtime. Please visit http://www.java.com for information on installing Java. 터미널에 java -version을 치면 깔끔하게 삭제된 것을 확인할 수 있다. 2022. 12. 17.