web 개발/spring 21

spring scheduler 사용

간단히 spring schedular사용에 후기에 대해작성해 보려고 한다. spring schedulerSpring Scheduler는 Spring Framework에서 제공하는 스케줄링 기능,주기적으로 반복되는 작업을 쉽게 구성하고 실행할 수 있게 해줌shceduler 방식public class Scheculer() { @Scheduled(fixedDelay = 1000) // scheduler 끝나는 시간 기준으로 1000 간격으로 실행 public void scheduleFixedDelayTask() { System.out.println( "Fixed delay task - " + System.currentTimeMillis() / 1000); } @S..

web 개발/spring 2024.07.02

<spring> cache 적용

캐시(Cache)데이터 또는 문서의 복사본을 임시 저장하는 장소로 빠르게 접근 가능자주 사용되거나 반복적으로 요청되는 데이터를 빠르게 로드 → 사용자 경험 향상, 서버 부하 캐시의 종류브라우저 캐시: 사용자의 브라우저에 데이터를 저장서버캐시: 서버 측에서 데이터를 저장분산캐시: 여러 서버에 걸쳐 데이터를 저장Redis와 캐싱Redis고성능 키-값 저장소로 널리 사용되는 분산 캐시 시스템메모리 내 데이터 저장과 빠른 읽기/쓰기 작업을 지원Redis를 사용한 캐싱의 장점속도: 메모리에 데이터 저장 → DB조회보다 빠름경제성: 자원사용 줄임확장성: 네트워크 통해 접근 가능 → 여러 서버에서 데이터 공유 가능@Cacheable 을 통해서 사용@Cacheable(cacheNames = "Best30")public..

web 개발/spring 2024.06.01

<spring> AOP(Aspect-Oriented Programming)

Aop는 관점 지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍이다.관점이란, 부가 기능과 그 적용처를 정의하고 합쳐서 모듈로 만든 것이다.AOP 주요 개념Aspect : 위에서 설명한 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화함.Target : Aspect를 적용하는 곳 (클래스, 메서드 .. )Advice : 실질적으로 어떤 일을 해야할 지에 대한 것, 실질적인 부가기능을 담은 구현체JointPoint : Advice가 적용될 위치, 끼어들 수 있는 지점. 메서드 진입 지점, 생성자 호출 시점, 필드에서 값을 꺼내올 때 등 다양한 시점에 적용가능PointCut : JointPoint의 상세한 스펙을 정의한 것. 'A란 메서드의 진입 시점에 호출할 것'과 같이 더..

web 개발/spring 2024.05.25

<Spring> 프로젝트 배포하기

1.gradle.build 이용하여 jar 파일 만들기bootjar 더블클릭하면 프로젝트\build\libs 에 {프로젝트}-0.0.1-SNAPSHOT.jar이 생긴 것을 확인 할 수 있다.2.filezila 사용해서 전체 파일 ubuntu로 옮기기git을 사용해서 ubuntu에 clone 할 수도 있지만 filezila를 사용 해 주었다. 사이트 관리자(ctrl + s)에 해당 설정을 해주고 연결을 해주고왼쪽(local) -> 오른쪽(ubuntu)로  {프로젝트}-0.0.1-SNAPSHOT.jar 파일을 옮겨준다.3. git bash 켜서 ubuntu 켜기ssh -i {pem key 경로 & 파일} ubuntu@퍼블릭 주소ex)  ssh -i /path/my-key-pair.pem ubuntu@13.1..

web 개발/spring 2024.05.20

<spring> IOC(제어의 역전), DI(의존성 주입)

IOC( Inversion Of Control) 제어의 역전소프트웨어 설계 원칙 중 하나로 프로그래밍에 있어 객체의 생성 및 관리 책임을 개발자에서 전체 애플리케이션 또는 프레임워크에 위임하는 디자인 원칙 프레임워크를 쓰면 프레임워크의 틀안에서 개발자가 짜둔 어플리케이션 코드를 호출하게 된다.제어하는 역할을 프레임워크가 가지게 된다. 이를 제어의 역전이라고 함 IOC 구현 방법Factory PatternTemplate Method PatternService Locator PatternDepedency Injection(DI)IOC 장점코드의 유연성과 재사용성 증가테스트 용이결합도가 낮아져 유지보수 용이IOC 단점코드의 가독성 떨어짐, 몰이해 발생초기설정과, 성능 이슈 발생가능 DI(Dependency I..

web 개발/spring 2024.05.18

<spring> spring framework 계층 (controller, service, repository)

1. 프레젠테이션 계층(Controller)클라이언트로 부터의 http 요청을 수신, 해당하는 응답 발신 2. 서비스 계층(Service)비지니스 로직 작성, 해결, 서비스의 핵심 로직 3. 데이터 엑세스 계층(Repository)repository에서 얻어온 정보를 바탕으로 자바 문법을 이용하여 가공 후 다시 controller에게 정보를 송신db나 파일 같은 외부 i/o 작업을 처리, 받아온 정보(Entity)를 데이터베이스에 저장하고 조회하는 기능 수행 각 계층들은 DTO를 통해 데이터 교환을 진행하고, 자신이 가지고 있는 역할만 수행하도록 개발 되어야 한다. 다른 계층의 역할을 수행하는 등, 결합도가 높아지면 재사용이 불가능 하고 코드를 작성 및 수정하는 데에 어려움증가 시킨다.

web 개발/spring 2024.05.18

<spring> @Controller vs @RestController 차이

@Controller전통적인 spring MVC controller이며 주로 view를 반환하기 위해 사용user의 요청으로 부터 view를 반환 @Responsebodyspring MVC controller를사용하면서 data를 반환하기 위해 사용controller에서는 데이터 반환하기 위해 responseBody를 사용 해야 함이를통해 JSON 형태로 데이터를 반환 할 수 있음 @RestController@Controller에 ResponseBody가 추가된 것JSON 형태로 객체 데이터를 반환하기 위해 사용, 데이터를 를응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환 요약!! Controller를 통해 반환 되는 것이 view // dat..

web 개발/spring 2024.05.15

<spring> DTO

DTO란?data transfer object (데이터 전송 객체)  계층 간 데이터 교환을 위한 객체로직을 가지지 않고 getter/setter 메소드만가진 순수한 데이터 객체 클래스DB에서 데이터를얻어 service나 controller등으로 보낼 때 사용  @Getterpublic class MemoResponseDto { private Long id; private String username; private String contents; public MemoResponseDto(Memo memo) { this.id = memo.getId(); this.username = memo.getUsername(); this.contents = m..

web 개발/spring 2024.05.15

<spring> REST API

REST API란?REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미 HTTP Method서버 구조에서 요청(request)과 응답(response)이 이루어지는 방식을 의미함 서버가 수행해야 할 동작을 지정하고 요청을 보내는 방법 GET: 리소스를 조회POST: 데이터 추가, 등록PUT: 리소스 대체, 수정(전체 수정)DELETE: 리소스 삭제P..

web 개발/spring 2024.05.15

<spring> MVC, thymeleaf

MVC란?model, view, controller로 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 사용되는 sw 디자인 패턴사용자가 controller 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 view를 제어하여 사용자에게 전달 model어플리케이션의 정보, 데이터를 나타냄, 정보들의 가공을 책임지는 컴포넌트view데이터 및객체의 입력, 보여주는 출력을 담당, 데이터를 기반으로 사용자들이 볼 수 있는 화면  controller사용자가 데이터를수정, 사용하는 것에 대한 이벤트를 처리하는 부분Thymeleaf란?controller가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 해주는 템플릿 엔진Model.addAt..

web 개발/spring 2024.05.15