본문 바로가기

Spring

(43)
@Scheduled 사용법, 스케줄러 커스터마이징을 통한 제어(+스케줄러에 등록한 작업 중지하는 방법, 배치 효과, 정확한 주기 작업 사용법) @Scheduled 사용법 주기적인 작업이 있을 때 @Scheduled 애노테이션을 사용하면 쉽게 적용할 수 있다. ex) linux의 crontab 1. @EnableScheduling Annotation을 적어서 스케줄링을 사용한다는 것을 알린다. @EnableScheduling @SpringBootApplication public class SchedulerApplication { public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); } } 2. 하위 패키지의 클래스에서 주기적으로 수행해야할 메서드 위에 @Scheduled Annotation을 붙인다. @Scheduled(fix..
spring boot yaml 파일에 쓰기! jackson-dataformat-yaml을 이용한 방법(snakeyaml? how to write to yaml file in spring boot) Spring boot에서 yaml 파일에 쓰기 Spring boot에서 보통 application.yml 파일이나 application.properties 파일에 설정값들을 적고 @ConfigurationProperties을 이용해서 Bean으로 등록해서 사용하는 게 일반적이다. 그래서 그런지 yaml 파일에 쓰는 것은 인터넷에 많이 안 나온다. 아래에서 아주 간단하게 써볼 예정이다. 필자가 yaml 파일에 쓰는 것을 생각하게된 이유는 서버 애플리케이션 운영 중에 설정 값을 변경하고 싶고, 서버 애플리케이션이 꺼졌다가 다시 실행되더라도 설정 값을 유지하고 싶었기 때문이다. 간단하게 데이터베이스에 설정 값을 저장하면 되지만...? 필자는 서버 애플리케이션을 개발하지만 DB를 내 마음대로 달 수가 없는 환경..
Springboot hystrix 사용기 (hystrix로 마이크로 서비스 간의 서비스 호출 실패를 방지해보자) Hystrix란? hystrix는 netflix에서 만든 라이브러리로 마이크로 서비스 아키텍처에서 분산된 서비스간 통신이 원활하지 않은 경우에 각 서비스가 장애 내성과 지연 내성을 갖게하도록 도와주는 라이브러리다. 결국 키워드는 통신 문제 극복이다. 라이브러리 적용 배경 기존의 모놀리틱 아키텍처에서는 A모듈의 A메서드에서 B모듈의 B메서드를 호출할 때, 이 메서드 호출에 실패하는 것은 아예 고려하지 않았다. 그럴 일이 없었기 때문이다. 그런데 마이크로 서비스 아키텍처에서는 다르다. 주문 서비스가 배송 서비스의 API를 호출했을 때 실패할 수 있다는 것이다. 위와 같은 상황에서 별다른 처리를 안했다면 배송 서비스에 문제가 있다는 이유로 주문 서비스도 어디선가 문제가 생기게 될 것이고, 주문 서비스를 호출하..
스프링 애플리케이션이 시작, 종료될 때 수행할 메서드 지정하는 방법 + 스프링 빈(Bean)이 생성, 소멸될 때 수행할 메서드 지정하는 방법(graceful 종료, CommandLineRunner, ApplicationListener, InitializingBea.. 스프링 애플리케이션 시작과 끝 스프링(스프링부트)으로 애플리케이션을 개발했을 때, 애플리케이션이 시작할 때 어떤 동작을 하고 싶은 경우가 있고, 반대로 애플리케이션이 종료되기 직전에 어떤 동작을 하고 싶은 경우가 있다. 예를들면 어떤 Configuration에서 값을 가져와서 초기 값을 설정한다든지, 애플리케이션이 종료되기 전에 하던 작업과 객체들을 우아하게(graceful) 종료한다든지 하는 작업들이다. 더 쉽게 표현하면 애플리케이션 입장에서의 생성자와 소멸자가 필요할 때가 있다는 것이다. 이 문제를 스프링에서는 인터페이스로 아주 쉽게 제공해준다. 뿐만 아니라 Spring bean이 생성될 때와 삭제될 때 수행하는 메서드를 구현할 수 있게 인터페이스로 제공한다. 아래에 코드를 보자! 1 2 3 4 5 ..
spring-boot-starter-data-redis 사용기, get/set 예제와 pub/sub 예제 간단하게 만들고 테스트해봤습니다. spring boot에서 redis 사용하는 방법 지난 포스트 중 자바에서 redis(Jedis)를 사용한 포스트가 있었다.jedis 라이브러리를 직접 불러와서 사용했었지만 이번에는 spring boot에서 starter로 제공하는 라이브러리로 사용하는 것을 해봤다.이것 또한 jedis를 사용하는 것과 다르지 않다.spring에서 redis와 관련한 라이브러리를 추상화시켜서 사용할 수 있게 해준 것이다.무슨말이냐면 자바에서 주로 사용하는 redis 라이브러리로는 jedis와 lettuce가 있다.두 라이브러리를 공통으로 추상화해서 둘 중에 어떤 것을 쓸 것인지는 설정을 통해 사용할 수 있게 하는 것이다.바로 사용해본다.Get, Set Redis는 In Memory key/value Database로 No..
New로 생성한 Instance에서 Bean이 필요할 때 @Autowired 대신 Bean 주입 받는 방법(Spring boot에서 ApplicationContext를 가져와서 넣어버리기) Spring boot에서 Bean 주입 받기 일반적으로 많이 사용하는 WebApplication을 개발하다보면 자연스럽게 @Repository, @Service, @Controller, @Component, ...등을 이용해서 bean으로 등록하고 Bean으로 등록되는 클래스에서 @Autowired로 주입받아 사용하곤 한다. 그런데 스프링으로 애플리케이션을 개발하다보면 Bean이 아닌 클래스에서 Bean을 주입받을 필요가 있을 때가 있다.static 메서드에서 필요하든지 new로 생성한 인스턴스에서 Bean을 참조해야한다든지 하는 경우다.이럴 때 스프링을 기초부터 배웠다면 쉽게 해결할 수 있다.@Autowired 애노테이션 자체가 spring IoC Container(ApplicationContext)에..
Spring AOP 스프링이 해줄건데 너가 왜 어려워 해? Spring boot에서 aop logging 사용법 제일 쉽게 알려드립니다! Spring AOP (Aspect Oriented Programming) - AOP는 관점 지향 프로그래밍으로 "기능을 핵심 비즈니스 기능과 공통 기능으로 '구분'하고, 공통 기능을 개발자의 코드 밖에서 필요한 시점에 적용하는 프로그래밍 방법"이다.위의 한 줄만 기억하면 된다.초보에게 Aspect, Advice, Pointcut, Weaving, Joinpoint, ... 이런거는 AOP를 이해하는데 방해하는 요소일 뿐이다. 추후에 AOP에 대해서 활용하고 싶고 깊이있게 이해하고 싶을 때 위에 나열한 것들에 대해서 공부해본다.스프링부트에서 초간단 AOP 적용하는 법 3단계1. spring-boot-starter-aop dependency 적용하기라이브러리는 있어야지.1234 org.springframew..
3가지만 기억하자. 스프링 부트 초간단 캐시 @EnableCaching, @Cacheable, @CacheEvict (spring boot cache example) 스프링 부트 캐시 적용하는 가장 쉬운 방법 스프링 부트에 캐시를 적용하고 싶으면 3가지만 기억하면 된다.@EnableCaching, @Cacheable, @CacheEvict1. "spring-boot-starter-cache" 라이브러리 불러온다.1234 org.springframework.boot spring-boot-starter-cacheColored by Color Scripter 2. 캐시 기능을 사용하고 싶은 프로젝트에 @EnableCaching을 쓴다.1234567@EnableCaching@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.ru..