반응형 Library & Framework/Spring13 [spring boot] 스프링 스케줄러 사용해보기 스프링 부트로 기능을 구현하다 보니 일정시간에 작업을 진행해야 하는 경우가 생긴다. 예를 들어 매일 12시에 맞춰 그날로부터 며칠이상 존재했던 데이터를 삭제하는 경우라던지, 새로운 데이터를 구해야 하는 것(전일 기준 인기 순위와 같은...)과 같은 작업을 진행해야 할 필요가 생긴다. 그래서 어떻게 하면 기능을 구현할 수 있을지 찾아본 결과 크게 두가지 방법으로 진행할 수 있는 것으로 확인했다. 바로 quartz와 spring scheduler이다. quartz는 조금 설정방법이 어려운 대신 섬세하게 설정이 가능하며 스케줄러 간의 클러스팅이라던가 후처리기능이 더 뛰어나다. 이번에는 단순하게 일정 기간 이후에 데이터를 삭제하는 작업을 진행하게 되어 간단하게 spring scheduler를 사용해보려고 한다... 2023. 10. 19. AOP에 대해 알아보자 스프링의 중요 개념 중 하나인 AOP (Aspect-Oriented Programming)에 대해서 알아보는 시간을 가져보려고 한다. AOP란? AOP란 개발을 하면서 중복코드를 제거하고 모듈성을 향상하기 위해서 사용되는 프로그래밍 패러다임이다. spirng은 이러한 AOP를 지원하고 있다. AOP의 핵심은 “횡단 관심사”를 분리하는 것이다. 즉, 애플리케이션의 주요 로직과는 별도로 존재하는 공통된 기능들을 한 곳에 모아서 관리하는 것 이러한 공통 기능을 “Aspect”라고 하며, 이를 원하는 부분에 주입하여 적용한다! AOP 장점 모듈성 향상 : 핵심 비즈니스 로직과 공통 기능들을 분리하여 코드의 가독성과 유지보수성을 개선한다. 중복 코드 제거 : 공통 기능이 여러 곳에서 필요한 경우, AOP를 사용하.. 2023. 8. 4. 필터(filter), 인터셉터(interceptor), AOP(Aspect-Oriented Programming) 살펴보기 Spring에서 필터와 인터셉터 그리고 AOP는 전부 공통 로직을 분리하여 처리하기 위해서 사용하기 위해서 사용되는 기능이다. 하지만 사용방법과 적용되는 위치의 차이가 있기 때문에 알맞게 사용해야 한다. 큰 구조는 Spring mvc Request 라이프 사이클을 통해 확인할 수 있다. ( AOP는 표시되어 있지 않지만...) 필터(Filter): 필터는 서블릿 컨테이너(예: Tomcat, Jetty)에서 요청과 응답을 가로채는 기능이다. 주로 요청과 응답의 헤더를 수정하거나 인코딩을 처리하는 등의 작업에 사용된다. Spring의 javax.servlet.Filter 인터페이스를 구현하여 사용한다. 필터는 web.xml에 등록하여 적용되고, Spring Boot에서는 FilterRegistrationBe.. 2023. 7. 22. [Spring boot] war로 배포하기, SpringBootServletInitalizer 현재는 spring boot에 Tomcat이 내장되어 있는 Embedded Tomcat형태의 jar파일로 빌드되어 단순히 실행하면 되지만 jsp를 사용하는 웹애플리케이션 같은 경우에는 war로 빌드하여 Tomcat이나 Jetty와 같은 외부 서블릿 컨테이너를 통해서 배포를 해야 했는데 이경우에 SpringBootServletInitalizer를 상속받아서 실행되도록 하여야 한다. 즉, SpringBootServletInitalizer를 상속받는 이유는 웹 애플리케이션 서버를 war형태로 배포하기 위해서 사용한다. jar vs war 그렇다면 war와 jar는 어떤 차이가 있는건지도 알아보았다. 먼저 두 파일 전부 애플리케이션을 간단하게 배포하고 실행시킬 수 있도록 관련파일들을 패키징 해주는 것이 목적이다.. 2023. 7. 22. [Spring boot] 설정 정보(application.yml / properties) 분리시키기 - spring profiles 사용 이유 현재 진행 중인 프로젝트에서 오라클 클라우드 프리티어를 이용해서 배포 테스트를 진행하게 되었다 현재 application.yml을 서브 모듈 ( https://teching.tistory.com/144 )을 사용해서 관리하고 있는 상황이었다. spring boot 설정 정보 외부에서 관리하기 2 - submodule https://teching.tistory.com/143 [spring boot 설정 정보 외부에서 관리하기 Spring boot 설정 정보 관리하기 서버를 github를 사용해서 형상관리를 할 생각인데 레파지토리를 public으로 열어두려고 한다... 공개 teching.tistory.com 오라클 클라우드의 DB는 특이하게 지갑을 이용해서 접속해야 하는데 그 경로를 지정해주어야.. 2023. 6. 12. [Spring boot] 설정 정보 외부에서 관리하기 2 - submodule https://teching.tistory.com/143 Spring boot 설정 정보 외부에서 관리하기 1 - 개요 Spring boot 설정 정보 관리하기 서버를 github를 사용해서 형상관리를 할 생각인데 레파지토리를 public으로 열어두려고 한다... 공개하게 되면 spring boot의 application.yml파일에는 아래와 같이 DB 접속 정 teching.tistory.com 지난번에 설정정보를 관리하는 여러 방법을 알아본 후 그중 Submodule을 사용해서 설정정보를 관리해 보려고 한다. 이를 위해서 submodule에 대한 공부가 필요한 것 같아 가볍게 알아보는 시간을 가져보려고 한다. 서브 모듈 서브 모듈이란? 서브 모듈이란, 프로젝트 내부에 다른 프로젝트를 사용해야 하는 경.. 2023. 3. 21. [Spring boot] 설정 정보 외부에서 관리하기 1 - 개요 Spring boot 설정 정보 관리하기 서버를 github를 사용해서 형상관리를 할 생각인데 레파지토리를 public으로 열어두려고 한다... 공개하게 되면 spring boot의 application.yml파일에는 아래와 같이 DB 접속 정보, API 키와 같은 공개되면 안 되는 민감정보가 포함되어 있어 위험할 수 있다고 생각이 들었다. 이것을 그대로 public 레파지토리 올리면 무수한 해킹 요청이 있을 것만 같았다. server: port: 9999 spring: datasource: url: jdbc:mysql://localhost/mydb username: root password: secret 그래서 설정 정보를 갖고있는 파일을 레파지토리에 포함하지 않고 따로 관리하기 위해서는 어떤 방법이 .. 2023. 3. 20. 스프링에 대해서 2000년 초반 자바당 정파 기술 EJB(Enterprise Java Beans)를 표준기술로 사용함. 금융권에서도 잘 사용하고 기술영업도 이것으로 함. 이론적인 것은 매우 좋음(분산기술, 원하는 계층만 더 추가하기도 편함) 하지만 개발비용이 너무 비싸고 구현하기에 너무 어렵고 속도도 느렸다. 또한 EJB인터페이스에 의존하여 코드를 구현해야 했음. 그래서 POJO(Plan Old Java Object) 오래된 순수한 자바로 돌아가자는 의견도 있었음. 이렇게 어렵고 힘들게 개발하다가 로드 존슨이 2002년 Expert One-on-One J2EE Design and Development 출간 EJB 컨테이너를 대체할 수 있고 단순함 후에 Spring으로 발전 또한 개빈 킹이 Hibernate(하이버네이트).. 2022. 2. 24. 자바 스프링입문5 - 회원 관리 예제 만들기 1 비즈니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 비즈니스 요구 사항 정리 데이터 : 회원ID, dlfma 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 회원 도메인과 리포지토리 만들기 hello.hellospring 패키지 아래 두 개의 패키지 domain, repository 생성 domain Member 클래스 생성 package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } publi.. 2022. 2. 7. 이전 1 2 다음 반응형