본문 바로가기

개발35

[Spring] Spring Boot 3 사용해보자! 소프트웨어 마에스트로 14기 과정을 참여하면서, 무사히 기획심의를 통과하고 프로젝트 설계 단계에 있다. 서버 개발은 스프링 프레임워크를 사용하기 때문에, Spring Boot 2를 사용할지 Spring Boot 3을 사용할지에 대해 고민하는 중이다. 따라서 Spring Boot 3이 등장하면서 변화한 점과 새로운 개념을 정리하고 이번 프로젝트에 왜 Spring 3을 사용하기로 결정했는지 포스팅하고자 한다. Spring Framework와 Spring Boot Spring Framework 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 핵심 기능 DI (의존성 주입) AOP (관점 지향 프로그래밍) IOC .. 2023. 6. 10.
[Spring Cloud] Eureka Client 구축하기 이전 포스팅에서 Eureka Server를 구축했으니, 서비스 디스커버리에 등록할 클라이언트를 구현하는 방법을 정리하고자 한다.Eureka Server 구축 : https://minnseong.tistory.com/13 Eureka Client 구축Gradle 의존성 추가implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' Euraka Client 활성화 (XXXApplication.java)@SpringBootApplication@EnableDiscoveryClientpublic class XXXApplication { public static void main(String[] args) { .. 2023. 6. 5.
[Spring Cloud] Eureka Server 구축하기 Spring Cloud Netflix Eureka는 Spring Cloud Framework에서 제공한다.https://spring.io/guides/gs/service-registration-and-discovery/ Eureka는 MSA에서 사용하는 서비스 디스커버리 기능을 제공한다.Service Discovery는 분산 환경에서 각각의 서비스가 서로 찾고 통신할 수 있도록 도와준다.MSA과 같은 분산 환경에서는 서비스 간의 통신이 이루어지며, 이는 IP 주소와 Port를 이용하는 방식이다.하지만 클라우드 환경에서는 서비스가 동적으로 생성되거나, 컨테이너 기반으로 배포되어 IP 주소와 Port가 자주 변경된다.따라서 Service Discovery를 통해 동적으로 변하는 IP와 Port를 직접 알지 .. 2023. 6. 5.
JWT (2) 스프링에서 JWT 사용하기 Gradle 의존성 추가 implementation 'com.auth0:java-jwt:4.2.1' https://mvnrepository.com/artifact/com.auth0/java-jwt/4.2.1 JWT 관련 설정 파일 생성 application-jwt.yml jwt: secretKey: access: expiration: 3600000 # 1시간 header: Authorization refresh: expiration: 1209600000 # 2주 header: Authorization-refresh jwt.secretKey 서버가 가지고 있는 개인키 암호화 알고리즘으로 HS512를 사용할 것이기 때문에, 64 bytes 이상의 영숫자 조합으로 아무렇게 작성 jwt.access.expira.. 2023. 5. 31.
[Spring] 벌크 연산 벌크 연산이란 여려 데이터를 한 번에 수정하거나 삭제하는 방법이다. 실제 벌크 연산을 하지 않을 경우, 어떤 성능적 이슈가 생기는지 예시를 통해서 알아보자. @Entity @AllArgsConstructor @NoArgsConstructor class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private int age; public void getOlder() { this.age += 1; } } Member member1 = new Member("john", 15); Member member2 = new Member("tom", 19); Member membe.. 2023. 5. 15.
[Spring] RestTemplate 싱글톤 등록 및 Connection Pool 설정 지난 프로젝트인 "QR 코드 기반 간편 주문 서비스"를 리팩토링하는 과정에서 배운 점에 대해서 기록하려고 한다. 간편 결제를 위해 KakaoPay 단건 결제 API를 사용하는 KakaoPayService 코드를 리팩토링 하는 과정에서 RestTemplate 객체를 생성하는 부분에 경고줄이 있다는 것을 확인하였다. 경고를 읽어보면 단순 중복된 코드라 쓰여있어 대수롭게 넘길려 했다. public String kakaoPayReady(Long orderId) { RestTemplate restTemplate = new RestTemplate(); Order order = orderService.findOrderById(orderId); ... } @Transactional public KakaoPayAppro.. 2023. 5. 14.