본문 바로가기

분류 전체보기

(122)
[Spring Boot] 스프링 부트 Response Entity 응답1. String : 일반 Text Type 응답2. Object : 자동으로 Json 변환되어 응답 상태값은 항상 200 OK3. ResponseEntity : Body의 내용을 Object로 설정 상황에 따라서 HttpStatus Code 설정4. @ResponseBody : RestController가 아닌곳(Controller)에서 Json 응답을 내릴 때 Spring Boot에서 ResponseEntity는 HTTP 응답을 보다 세밀하게 제어할 수 있는 방법을 제공합니다. ResponseEntity를 사용하면 상태 코드, 본문(body), 헤더(headers)를 모두 설정할 수 있습니다.ResponseEntity의 구성 요소Status Code: HTTP 상태 코드를 설정할 수 있습니다.Bo..
[Spring Boot] @Configuration vs @Component @Component는 주로 개발자가 작성한 코드 내에서 스프링 빈을 자동으로 등록하기 위해 사용합니다. 스프링이 클래스의 인스턴스를 자동으로 생성하고, 스프링 빈으로 관리합니다.- @Componen에 지정을 한다면 @Bean을 사용한 메소드의 반환 값이 싱글턴을 보장해주지 못할 수 있다고 한다. @Configuration은 복잡한 설정이 필요하거나 개발자의 직접적인 제어가 어려운 외부 라이브러리 등을 스프링 빈으로 등록할 때 사용합니다. 설정 클래스 내에서 @Bean 어노테이션을 사용해 개별 빈들을 정의하고 생성합니다.- @Configuration이 붙은 클래스는 스프링의 CGLIB 프록시를 사용해서 정의했던 @Bean를 호출하면 싱글턴을 보장해준다고 한다.  빈(Bean)으로 등록하는 방법Spring ..
[Spring Boot] Validation Annotation (DTO) Validation은 데이터 유효성을 검사를 의미합니다. 이는 입력, 데이터 변환, 데이터 처리 등의 과정에서 데이터가 예상된 형식, 조건, 범위를 만족하는지 확인하는 과정입니다.  스프링부트에서 Validation을 구현하는 방법스프링부트에서는 주로 '@Valid'나 '@Validated'어노테이션을 컨트롤러의 메소드 파라미터에 사용하여 모델 객체를 검증합니다. '@Valid'를 사용하면 자동으로 'BindingResult'나 'Errors' 객체에 검증 결과가 바인딩됩니다. 또한, '@NotNull', '@Min', '@Max' 등의 제약 조건 어노테이션을 모델의 필드에 직접 선언하여 사용할 수 있습니다.  Validation API의 사용 설정dependencies { implementatio..
[Spring Boot] fetch API와 Server 데이터 서버 Fetch API 데이터 전송 (기본)클라이언트(html, js) - index.js fetch API 비동기 처리 아이디 : 비밀번호 : --> 전송   - index.jsconst addIndexEvent = () => { const buttonEvent = document.getElementById("submit"); buttonEvent.addEventListener("click", submitServer);};const submitServer = async (event) => { event.preventDefault(); const COMMON_URL = 'http:/..
[Spring Boot] CORS 설정하기 문제) 비동기 처리 과정에서 CORS 에러 확인  CORS (Cross-Origin Resource Sharing)는 웹페이지의 리소스가 다른 도메인, 프로토콜, 또는 포트가 달라도 안전하게 접근할 수 있도록 허용하는 보안 기능입니다. CORS 정책은 웹 브라우저가 기본적으로 구현하고 잇으며, 웹 보안의 중요한 부분입니다.CORS 에러 발생 원인CORS 에러는 웹 애플리케이션이 다른 출처의 리소스에 접근하려 할 때 해당 출처에서 적절한 CORS 헤더를 포함하지 않은 응답을 반환하면 발생합니다. 예를 들어, http://domain-a.com에서 실행 중인 웹 페이지가 http://domain-b.com/data.json을 요청하고, domain-b.com에서 Access-Control-Allow-Orig..
Spring Web MVC에서 요청 마다 Thread가 생성되어 Controller를 통해 요청을 수행할텐데, 어떻게 1개의 Controller만 생성될 수 있을까요? 각각의 Thread는 singleton으로 생성된 Bean( ⇒ Controller 포함 ) 들을 참고하여 일을 함*이 때 생성되는 Bean들은 기본적으로 singleton> Controller 역시 singleton으로 각각의 Thread들이 하나를 공통적으로 사용한다고 보면 됨 Controller 객체는 Heap에 생성되지만 class에 대한 정보는 Method  영역에 저장됨 > 모든 Thread들이 접근 가능 하나의 Singleton Controller가 수많은 요청을 처리하는 것이 아니고 각각의 Thread가 singleton으로 생성된 Controller를 참고하여 요청을 실행함    결론생성한 Controller 클래스에 대한 정보가 JVM 메모리 영역 중 Method ..
spring Application 메소드 실행 방법 스프링 어플리케이션을 구동할 때 메서드를 실행시키는 방법CommandLineRunner, ApplicationRunner를 구현한 클래스를 만들어서 실행시키는 2가지 방법Spring의 ApplicationEvent를 사용하는 방법, @Postconstruct를 사용한 방법,InitializingBean 인터페이스를 구현하는 방법, @Bean의 initMethod를 사용한 방법  CommandLineRunner인터페이스는 구동 시점에 실행되는 코드가 자바 문자열 아규먼트 배열에 접근해야할 필요가 있는 경우에 사용다음과 같이 CommandLineRunner 인터페이스를 구현한 클래스에 @Component 어노테이션을 선언해두면 컴포넌트 스캔이되고 구동 시점에 run 메소드의 코드가 실행imp..
@bean 과 @component 의 차이 스프링 MVC에서는 @Controller, @Service, @REpository 등으로 빈을 등록할 수 있다.configuration 관련 객체들은 @Bean 과 @Component 로 스프링 컨테이너에 객체를 빈으로 등록 할 수 있다.@Bean반환되는 객체(인스턴스)를 개발자가 수동으로 빈 등록@Configurationpublic class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(); }}@Component스프링이 런타임시 componet 를 스캔해 자동으로 빈을 찾고 등록@Componentpublic class Utility { // ..
Servlet Filter, Spring Interceptor 차이 간단 요약 FilterInterceptor관리되는 컨테이너웹 컨테이너스프링 컨테이너Request/Response 객체 조작 가능 여부OX용도* 공통된 보안 및 인증/인가 관련 작업 * 모든 요청에 대한 로깅 또는 감사 * 이미지/데이터 압축 및 문자열 인코딩 * Spring 과 분리되어야 하는 기능* 세부적인 보안 및 인증/인가 공통 작업 * API 호출에 대한 로깅 또는 감사 * Controller 로 넘겨주는 정보(데이터)의 가공  Servlet Filter필터는 말 그대로 요청과 응답을 거른 뒤 정제하는 역할을 한다. 자바에서 제공Dispatcher Servlet에 요청이 전달되기 전/후에 URL 패턴에 맞는 모든 요청에 대해 부가작업을..
IoC 컨테이너의 개념 및 역할 컨테이너란? 쉽게 예시를 들자면, 현재 컴퓨터 조립하는 회사에 다닌다고 가정. 고객에게 주문서가 들어오면 우리는 주문서대로 컴퓨터를 만들기 위한 부품들을 박스에 담게 되는데 그것이 컨테이너. 마찬가지로 우리가 스프링을 사용할 때 만들어야 할 주문서대로 객체를 담아야 하는데, 소프트웨어상 그 객체들을 담는 공간을 일반적으로 컨테이너라고 한다. ⇒ 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공하는 것으로 이해하면 된다. IoC란? Inversion Of Control 제어 반전, 제어의 역전 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다. 우리가 사용하던 자바 프로그램에서는 개발자가 직접 객체를 생성하고, 원하는 클래스 내에서 다른 객체를 생성해..