본문 바로가기

spring3

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.