본문 바로가기

spring9

[AWS, Java, Spring] Presigned Url로 S3에 이미지 업로드하기 Presigned Url을 사용해야 하는 이유백엔드 서버를 구축할 때, 기초적인 이미지 업로드 구현을 서버가 S3 버킷에 직접 업로드하는 방식으로 하는 경우가 많다. 소규모 프로젝트에서 이 방식이 가장 간편하기 때문이다. 이 구조를 그림으로 표현하면 다음과 같다. 즉, 서버에서 이미지 파일을 직접 전송받고 s3에 전송해 줘야 하기에, 이 과정에서 서버 자원이 많이 소모된다. 하지만 aws s3에서 제공하는 presigned url을 사용한다면 서버에서 파일을 직접 처리하지 않게 되기에 서버의 부담이 많이 줄어드는 큰 장점이 있다. 또한, aws에서 presigned url을 통해 파일을 업로드하는 경우 처리 속도를 아주 빠르게 제공해 주고 있어서 기존 프로젝트보다 성능이 향상된다.  Presigned U.. 2024. 8. 22.
[AWS, Java] Cloudwatch 경보를 AWS sdk for Java로 만들기 Cloudwatch Alarm (경보)란?Cloudwatch에서 다양한 이벤트에 대한 지표, 로그, 경보 등을 만들 수 있다. 쉽게 말하자면, 내가 설정한 AWS에서 발생한 일에 대해 모니터링을 할 여러 수단들이 마련되어 있다는 뜻이다. 이 중 경보(alarm)은 내가 설정한 어떤 일이 발생했을 때, 이메일 송신과 같은 방법으로 알람을 받을 수 있게 설정하는 도구다. 위 사진처럼 AWS 콘솔 - cloudwatch 에서 경보 탭을 클릭하여, 경보를 쉽게 만들 수 있다. 그러나 콘솔에서 경보를 만드는 것 뿐만이 아니라, AWS sdk for Java를 이용하여 스프링 프로젝트에서도 경보를 다룰 수도 있다. 나는 회사의 프로젝트에서 자동으로 경보를 생성하는 알고리즘이 필요했기에 이 방법을 사용하게 되었는데,.. 2024. 7. 9.
[MyBatis] mapper.xml의 parameterType에 인자 2개 넣기 parameterType MyBatis에서 SQL문에 들어가는 인자의 데이터 형태를 반드시 명시해 줘야 하며, 이는 parameterType로 설정한다. 숫자면 int, 문자면 String 등 을 명시해야 Spring이 제대로 작동한다. 만약 여러 개의 인자를 넣고 싶다면, 해당 인자들의 집합을 Java 객체 클래스로 따로 선언하여 사용하는 것이 효율적이다. 예를 들어 회원정보를 저장할 때 Member객체를 생성하여 insert문에 보내주면 된다. INSERT INTO MEMBER ( mNO, ID, PASSWORD, ROLE, NAME, STATUS, ENROLL_DATE, MODIFY_DATE ) VALUES( 0, #{id}, #{password}, DEFAULT, #{name}, DEFAULT, .. 2024. 4. 9.
Spring MVC Project 로그인 프로세스 로그인 프로세스 예시 1. Client가 View에서 아이디-비밀번호 제출 사용자가 아이디와 비밀번호를 제출하게 되면, 해당 제출 form의 데이터가 전송된다. 이 때 요청에 포함된 데이터로는 아이디, 비밀번호, form의 action 그리고 method가 있다. 이번 예시에서는 다음과 같은 from이 사용되어, "/login"으로 post방식으로 아이디와 비밀번호 데이터를 보내게 된다. 이에 "/login"의 post방식이 매핑된 controller부분으로 요청이 전해지게 된다. 2. Controller로 요청 전달 이번 예시에서 controller.java가 다음과 같은 처리를 하도록 코딩되었다. @PostMapping("/login") // POST임을 알리는 어노테이션 public String l.. 2024. 4. 3.
Spring MVC Project의 구조 Spring Framework (Spring MVC Project) 구조 스프링 프레임워크 프로젝트(Maven)을 만들 때 사용되는 구조를 간단하게 표현하면 다음 그림과 같다. Client 요청을 처리하는 프로세스 Client가 URL로 View에 접근하여 정보를 요청 View -> Dispatcher로 요청 전달 -> HandlerMapping 해당 요청을 매핑한 Controller가 있는지 검색 -> Controller로 요청 전달, 처리할 것을 요구 Controller에서 요청을 처리. 처리과정에서 DB접근이 필요하다면 -> Service의 메소드 호출 Service -> Mapper의 메소드 호출, 매핑된 테이블/컬럼/속성/SQL구문에 접근 Mapper -> DB로 SQL구문 실행 DB -> Ma.. 2024. 4. 2.
[Spring] 프로젝트에 Dependency추가하기 (+Json파싱) Java에서 JSON 파싱 자바에서 Json데이터를 파싱할 때, 주로 org.json.simple 라이브러리에서 메소드를 호출해서 파싱하는 것이 간편하다. 요약하자면 다음과 같은 코드로 파싱한다. Json데이터 -> 파싱 -> JsonObject로 변환 -> key-value에서 key입력으로 value검색 순서로 진행된다. 여기서 JsonObject는 key-value로 구성된 객체이다. // 먼저 Json데이터를 읽는 메소드를 호출한다 JSONParser jsonParser = new JSONParser(); // Json데이터를 JsonObject형태로 변환한다. JSONObject rootObj = (JSONObject) jsonParser.parse(제이손데이터); // key값으로 value를.. 2024. 3. 16.
문화재청 행사일정 API로 달력 만들기 시리즈 (3) 지난번에 문화행사 데이터를 저장하고, ics파일로 만들기까지 진행되었다. 이제 이 데이터로 javascript에 풀캘린더(full calendar)를 활용해 달력을 출력할 시간이다. 풀캘린더 공식 사이트 Introduction - Docs | FullCalendar Introduction - Docs | FullCalendar How to get FullCalendar’s code, initialize a calendar, and other basic principles. fullcalendar.io 풀캘린더 Full Calendar 사용하기 1) 세팅 풀캘린더를 사용하면 내가 직접달력을 구현할 필요가 없이, 미리 구현된 달력에 내 데이터를 입력하기만 하면 된다. 풀캘린더 공식 홈페이지에서 세팅할 수 있.. 2024. 2. 25.
문화재청 행사일정 API로 달력 만들기 시리즈 (2) 지난 글에서 문화행사 일정을 MySQL에 저장하는데까지 진행하였다. 이제 이 데이터를 이용해서 ics파일을 만들고자 한다. iCal4j 를 Spring에 세팅하기 자바에서 쉽고 간단하게 ics파일을 다루는 iCal4j 라는 라이브러리가 있기에, 이를 사용하면 ics파일 쓰기/읽기/저장하기를 할 수 있다. iCal4j 공식 레퍼런스 사이트Getting Started - iCal4j Getting Started - iCal4jGetting Started These instructions are designed to help you get a basic setup, to be able to start coding with iCal4j. Download iCal4j libraries are.. 2024. 2. 25.
문화재청 행사일정 API로 달력 만들기 시리즈 (1) 프로젝트 목표 1) 문화재청에서 제공하는 API중에서 문화행사 일정 데이터가 있다. 나는 이 데이터를 활용하여 스프링 프로젝트에서 문화행사 일정 달력을 출력하려고 목표를 설정하였다. 문화재청 API 링크 문화재청 > Open API 개방목록 > 문화재정보 > 활용정보 (cha.go.kr) 문화재청 > Open API 개방목록 > 문화재정보 > 활용정보 Open API 개방목록 문화유산소식 --> 안내사항 오픈API 소개 오픈API란 누구나 사용할 수 있도록 공개된 API를 말합니다. 데이터를 표준화하고 프로그래밍해 외부 소프트웨어 개발자나 사용자들과 공 www.cha.go.kr 2) 또한, 데이터를 iCalendar(ics)형태의 파일로 만들어서 구글 캘린더나 네이버 캘린더와 같은 서비스에서 행사일정 목.. 2024. 2. 23.