-
Spring Boot Starter별 차이점Spring Boot/MVC 2023. 10. 22. 18:33
spring-boot-starter-web Spring MVC를 사용하는 전형적인 REST api Service spring-boot-starter-jersey JAX-RS의 Jersey 구현을 사용하는 REST 서비스 ※ JAX-RS : 자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API이다. spring-boot-starter-web-services SOAP를 지원하는 서비스 출처 : https://stackoverflow.com/questions/39972171/difference-between-spring-boot-starter-web-and-spring-boot-starter-web-services
-
shared lock와 exclusive lock의 차이점 및 활용DB 2023. 10. 22. 18:07
Shared Lock이란? 하나의 트랜잭션이 같은 데이터를 읽을 때 읽기는 허용하지만 수정은 불가 Read Lock이라고도 불리며, 데이터를 읽기 위해서만 사용된다. 읽기 요청 중에 레코드가 업데이트되는 중이 아닌지 확인합니다. (데이터의 무결성 지원) 모든 종류의 Update로 부터 안전하다. Lock-S로 표시할 수 있다. Lock-S 명령어를 통해 사용할 수 있다. 예시 두 개의 트랜잭션 1,2가 존재. 트랜잭션1의 작업 내용 : A값을 200으로 변경 트랜잭션2의 작업 내용 : A를 읽는 작업 수행 트랜잭션 1,2가 동시에 발생하는 상황에서 Shared Lock이 없다면 트랜잭션 2는 A를 '100'이라는 잘못된 값으로 읽음 반대로, Shared Lock이 있다면 트랜잭션 1은 트랜잭션 2가 읽기..
-
SpringBoot에서 Scheduling 사용하기Spring Boot 2023. 10. 22. 17:55
스케줄링은 특정 시간 동안 작업을 실행하는 프로세스이다. Spring Boot를 통해 Spring에서 지원하는 스케줄러를 간편하게 작성할 수 있다. 스펙 요구사항 Schedule 기능 켜기 자바 설정(Java configuration) 관련 클래스에 @EnableScheduling 를 추가하면 기능을 사용할 수 있다. package com.example.schedulingtasks; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableSchedul..
-
[동시성] Thread 테스트용 코드Java 2023. 10. 22. 17:50
설명 업무를 수행하다보면 멀티 쓰레드 환경에서 동시성을 고려해볼법한 일들이 간혹 존재한다. 동시성 테스트를 하는 경우에 아래와 같은 샘플코드로 테스트를 수행하기 위해 샘플 코드를 적어놨다. 환경 JDK 11 Version\ import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; public class Main { volatile static int cnt = 0 ; AtomicInteger cnt2 = new AtomicInteger() ; pu..
-
스프링부트 3.0으로 전환Spring Boot 2023. 10. 22. 17:49
개인 프로젝트를 수행하면서 스프링 3.0을 적용했었는데,,, 기존의 방식과의 호환성 문제로 여러 애를 먹었었다. 어떤 점들이 바뀌었는지 정리를 해두면 좋을 것 같아서 정리를 미리 해두려고 한다. Upgrade to Java 17 스프링부트 3.0 버전부터는 자바 17버전을 필요로 한다. Upgrade to the Latest Spring Boot 2.7.x 스프링부트 2.7부터 마이그레이션을 한다는 가정하에 마이그레이션 가이드를 제공한다. Check for Calls to Deprecated Code Deprecated된 코드들을 확인해야한다. 12개월의 기간을 주고, 그 이후에는 삭제시켜버린다... Migrate from Legacy application.properties and application..
-
빈을 찾지 못하는 에러에러 히스토리 2023. 10. 22. 17:14
Error 내용 Description: The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true) Action: Consider defining a bean of type '~~~' in your configuration. Component로 등록하는 어노테이션을 누락해서 발생하는 오류. 쿼리 xml 경로 확인 필요. xml 내부의 mapper 경로 확인 필요.
-
@ConfigurationProperties 사용법Spring Boot 2023. 10. 22. 17:14
.properties , .yml 파일에 있는 property를 자바 클래스에 값을 가져와서(바인딩) 사용할 수 있게 해주는 어노테이션 Spring boot 에서는 운영에 필요한 설정(DB 정보, LOG설정 등등 )들을 .properties , .yml 에 써두고 관리한다. 위 그림과 같이 yml 파일이 설정돼 있고, 아래 그림처럼 설정을 하면 톰캣 서버 실행시, spring이 Component Scan할 때, 아래의 클레스와 변수들에 값을 세팅시켜준다.
-
@Bean vs @Component 차이점 및 사용법Spring Boot 2023. 10. 22. 17:10
스프링에서 빈으로 등록하는 방법 스프링 MVC에서는 @Controller, @Service, @Repository 등으로 빈으로 등록이 가능하다. configuration 관련 객체들은 @Bean과 @Component로 스프링 컨테이너에 객체를 빈으로 등록할 수 있다. 그럼 @Bean 과 @Component의 차이는 무엇일까? @Bean은 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 빈으로 등록하는 애노테이션이다. 반면 @Component는 클래스 레벨에서 선언함으로써 스프링이 런타임시에 컴포넌트스캔을 하여 자동으로 빈을 찾고(detect) 등록하는 애노테이션이다. @Bean 사용 예제 @Configuration public class AppConfig { @Bean publi..