[JPA] API 생성시 Entity 를 반환하지 말자.
·
JVM/JPA
🎯 Goals Entity 는 사실상 Getter Setter 및 핵심 비즈니스 메소드만 있어야한다. 화면 디자인과 관련된 로직을 추가해선 안된다. API 설계시 entity 객체를 반환하지 않아야한다. 라는 위 두 명제를 이해한다. 잘못된 예제 Member.java @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String userName; @Embedded private Address address; // 연관 관계의 주인이 아닌 경우 읽기 전용이 됨. // `member` field in order 에 의해 매핑되었다는 것을 명시. @..
[Spring] Library 살펴보기 및 스프링 환경설정
·
JVM/Spring
주요 Library 목록 HikariCPDB Connection Pool Library slf4j인터페이스 모음으로 요새 대세.라이브러리 설정만 바꾸면 구현되있는 로거를 바꿀 수 있는 애 ThymeleafWeb View 단   build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // 개발 편의성을 위한 툴, reloading 에 유리 imp..
PowerPoint 팁과 단축키 모음
·
기타/잡동사니
말과 글이 깔끔해지는 PPT 서식 Tips Numbering 제목과 총 개수 표시 줄바꿈 표 사용 공간이 넉넉할 경우 좌우 분산 불필요한 조사 생략 넘버링 + 제목과 총 개수 표시 + 줄바꿈 표 사용 및 불필요한 조사 생략 좌우 분산 PPT 페이지 공간이 넉넉할 경우 사용. 숫자로 내용 강조 예시 색상 테마 정하는 팁 이미 자주 사용하는 이미지를 불러오고 홈 - 도형 채우기 - 스포이트 기능을 사용하면 쉽게 원하는 테마의 색상을 따라할 수 있다. 메모장을 PPT로 옮기는 팁 Enter 로 슬라이드 구분 Tab 으로 하위 항목 구분 파일명.ppt 저장 인코딩 UTF-16LE 아래와 같이 메모장에 입력하고 메모장.ppt 파일을 저장하면 다음과 같은 4장의 ppt 슬라이드가 구성된다. When to use? ..
[Spring] Bean Scope
·
JVM/Spring
빈 스코프는 빈이 존재할 수 있는 범위를 말한다. Spring Scope 구분 설명 실행 순서 싱글톤 기본 스코프, 스프링 컨테이너 시작-종료까지 유지되는 가장 넓은 범위 스코프 스프링 컨테이너 생성 시점에 Bean 생성, DI 및 초기화 메소드 실행 프로토타입 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 Bean 을 조회할 때 생성되고 초기화 메소드도 실행됨. 90% 이상은 싱글톤, 간혹 프로토타입 스코프를 사용한다. 왠만하면 다 싱글톤으로 해결하라. 웹 관련 스코프 구분 설명 Request 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 Session 세션이 생성되고 종료될 때까지 유지되는 스코프 Application 웹의 서블릿 컨텍스트 같은 범위..
[Spring] 빈 생명주기 콜백
·
JVM/Spring
Conclusion @Postonstruct, @PreDestory annotation 으로 콜백메소드를 지정하라. 외부 라이브러리 콜백 메소드 지정이 필요할 때만 @Bean 메소드 지정 방식을 사용하라. Why to use? 애플리케이션을 개발하다보면 초기에 DB 커넥션 풀이나 Socket 등 을 미리 열어두는 것이 필요할 수 있다. 반대로 이렇게 연결을 유지하는 객체들은 애플리케이션 종료시 안전하게 연결 해제 (혹은 반납)을 해줄 필요가 있다. 이를 'release' 혹은 'close' 라 하는데, Spring은 이 동작을 안정적이고 편하게 할 수 있는 매커니즘을 제공한다. 스프링 빈은 객체 생성 -> 의존 관계 주입 초기화 작업은 의존관계 주입 '후'에 되야한다. 이 "의존 관계 주입 완료" 시점을..
[Spring] Autowired 사용시 주의 (Feat. Custom Annotation)
·
JVM/Spring
한 타입(Interface)에 대해 여러 Bean 이 등록되어 있으면 어떻게 해결할 것인가? Autowired 동작 순서 Type Matching Type Matching 결과가 2개 이상인 경우 필드명이나 파라미터 명으로 빈 이름 매칭. public class OrderServiceImpl implements OrderService{ // 구현체가 아닌 Interface (역할) 에만 의존해야한다. => DIP 원칙 준수 private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // Type Matching 시도 // 타입 매칭 결과가 2개 이상인 경우 필드명 혹은 파라미터..