웹 개발 57

[Spring] Bean의 생명주기

스프링의 객체 생명주기에 대해 작성하고자 한다. 1. "객체의 생명주기"란? : 객체가 메모리에 생성되어 사용된 후 제거되기까지의 전 과정. 2. "Bean"이란?먼저, "Bean"이란, 원래의 자바 프로젝트라면 개발자가 직접 new 연산자를 사용해서 객체를 생성하고 의존 관계를 정립해주어야 하는데, 스프링에서는 스프링 컨테이너가 대신 객체를 생성하고 관리해주는 것을 말한다. 스프링이 내부적으로 new를 통해 객체를 생성하고 필요한 곳에 DI를 해준 뒤 컨테이너에 빈으로 등록되면 해당 객체는 스프링 컨테이너가 관리하게 되며 코드의 결합도를 낮추고, 유지보수성을 높혀준다. 3. Spring Bean의 생명주기 단계1) 해당 클래스의 정보를 빈으로 등록 ( @Component 등의 어노테이션을 통해 스프링..

웹 개발 2025.06.09

복호화와 양방향 암호화 방식

이번에는 비밀번호를 단순 암호화했지만, 이메일이나 전화번호 같이 개인 식별 가능한 정보들은 복호화가 필요한 경우가 있다고 생각한다. 예를 들어 내 정보 수정 같은 경우.. 그래서 양방향 암호화 알고리즘을 적용하여 정보 유출에 대비하고, 필요할 시에 사용자 본인만 복호화 가능해야 한다. 1. 복호화 : 암호화된 데이터를 다시 원래의 평문으로 되돌리는 과정.- 전화번호나 이메일 같은 민감 정보를 암호화해서 저장해 놓고, 사용자 본인이 마이페이지에서 정보를 수정하거나 확인할 때 다시 보여줘야 하는 경우, 이때 암호문을 다시 원래대로 복구해서 보여줌암호화된 전화번호: Zk92L30sM== → 복호화 → 원래 전화번호: 010-1234-56782. 양방향 암호화 : 암호화와 복호화가 모두 가능한 암호 방식 -..

웹 개발 2025.06.01

REST API란?

발표 후 해당 질문을 받았는데.. 순간 머리가 멍해져서 대답을 못했다. GET/POST를 떠올리면 됐는데.. 1. REST란?REpresentational State Transfer의 약자.웹의 자원을 URL로 표현하고, 그 자원에 대한 행위는 HTTP 메서드로 표현하는 아키텍처 스타일을 뜻함. 자원(Resource) → /users, /posts, /products 등의 URI로 표현행위(Method) → GET, POST, PUT, DELETE 등의 HTTP 메서드 사용→ 설계 원칙!2. REST API란? : REST 아키텍처 원칙을 따르는 API→ API란? 프로그램 간 통신 창구를 의미하고, REST API란? REST 원칙을 따르는 URL + HTTP 메서드로 구성된 API를 말한다.3. RE..

웹 개발 2025.05.30

[FullStack] 상품 품절 시 상품 목록에서 품절 이미지 띄우기

// 모듈화 메서드 // call by reference로 리스트 반환 안해도 됨 // 개별 상품 // 품절 시 이미지 경로 변경하여 Map 세팅 기능 private void returnApplyProductSingleSoldoutImgPathMapList(List> response, List list) { // 품절된 상품의 이미지를 품절 이미지로 교체하는 메서드 // List> response : JSON형태로 보내기 위한 Map 구조 리스트. // 결과값을 담는 리스트이다. // 키-값 형태로 되어있는데, JSON 형태처럼 값을 담은 리스트 // List list : 단품 상품 리스트. DB에서 가져온 상품 목록이다. final String soldoutImgLink =..

웹 개발 2025.05.28

[Front] AJAX 콜백 함수 형식

error: (xhr, status, error) => { console.error("AJAX 요청 에러 발생", xhr.status, status, error); printSweetAlert("error", "서버에 문제가 발생했습니다.", "지속될 시 관리자에게 문의하세요.", "error.do");}=> "AJAX 요청이 실패했을 때 실행되는 함수" success는 요청이 성공했을 때, error는 실패했을 때 호출된다. 매개변수 의미xhrXMLHttpRequest 객체 (실제 요청과 응답을 담고 있음)status텍스트 상태 (예: "error", "timeout" 등)error에러 내용(에러 메시지 또는 예외 정보) 1) xhr은 HTTP 상태코드를 출력함 (404, 500 등)2) statu..

웹 개발 2025.05.26

[Front] dataType: "text" vs dataType: "json" 차이

dataType: "text" vs dataType: "json" 차이 항목textjson의미그냥 문자열 그대로 받음JSON 형식의 데이터 객체로 받음자동 파싱X (직접 파싱해야 함)O (response가 JS 객체로 자동 변환됨)속도더 빠름 (단순 데이터 전송)약간 느림 (파싱 과정 있음)용도"중복입니다" 처럼 간단한 텍스트 응답{ "isDuplicate": true } 같이 구조화된 응답용량작음큼직관성사람이 보기 쉬움JS 코드에서 다루기 쉬움 아이디 중복 검사에서 text로 주고 받은 이유는 간단한 텍스트 응답을 위해서이다. 아이디 중복 여부만 판단하는 거라 구조화된 JSON이 필요 없고, JSON보다 가볍고 빠르다.즉, 단순한 true/false 판단만 필요했기 때문에, 더 빠르고 가벼운 text..

웹 개발 2025.05.25

[Front] DOM요소와 제이쿼리

1. DOM 요소란?DOM은 Document Object Model의 줄임말로, HTML 태그 하나하나를 자바스크립트로 다룰 수 있도록 만든 문법이다. 다음과 같은 코드가 있을 떄는, document.getElementById("memberId").value; // → "abc123"를 통해 ab123이라는 값을 가져올 수 있다.즉, HTML 태그 하나 == DOM 요소 하나이다.2. $(" "): 제이쿼리 문법.$("#memberId")는 document.getElementById("memberId")와 동일한 의미이다.즉, DOM 요소 = HTML 태그를 자바스크립트로 다룰 수 있게 만든 객체$(“#id”) = jQuery로 특정 HTML 요소를 선택하는 방법요소 선택document.getEleme..

웹 개발 2025.05.24

[Spring Boot] @Primary와 @Qualifier의 차이

@Primary와 @Qualifier 차이@Primary는 같은 타입의 빈을 사용할 시 한 객체에게 우선순위를 부여한다. @Bean 으로 생성하는 객체들 중 같은 클래스(타입)인 빈이 있다면, 스프링은 어느 것을 빈으로 생성하여야 하는지 알 수 없기 때문에 컨테이너를 띄우지 못하고 NoUniqueBeanDefinitionException 이라는 예외를 던진다.그렇기에 찾고자하는 객체에 @Primary를 붙여준다. @Qualifier는 @Component가 객체의 자료형을 참고하기 때문에 같은 타입을 사용하는 빈이 있을 경우 객체의 이름까지 참고하여 해당하는 빈을 찾는다.

웹 개발 2025.05.22

[Backend] 비밀번호 암호화

1. 스프링 부트에 내장된 암호화 라이브러리 : BCryptPasswordEncoder 클래스 public class BCryptPasswordEncoder { public String encode(CharSequence rawPassword) { // 내부적으로 salt + 해시 처리 } public boolean matches(CharSequence rawPassword, String encodedPassword) { // 해시된 비밀번호와 입력값 비교 (같은 salt로 해시해서) }}메서드까지 전부 내장되어 있음. 형식 그대로 따라 쓰면 된다!내장된 클래스는 구글링 등으로 찾아서 쓰면 된다.메서드도 함께 찾아보고 사용할 것.2. SecureRandom ..

웹 개발 2025.05.19