일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 윤성우 열혈자료구조
- 이것이 자바다
- Selection Sorting
- R
- stream
- coding test
- JSON
- insertion sort
- Serialization
- s
- 윤성우의 열혈 자료구조
- Stack
- C programming
- buffer
- datastructure
- 이스케이프 문자
- Graph
- 혼자 공부하는 C언어
- Algorithm
- 메모리구조
- list 컬렉션
- C 언어 코딩 도장
- 알기쉬운 알고리즘
- Today
- Total
목록Server (73)
Engineering Note
1. 의존성 주입이란?의존성 주입(Dependency Injection, DI)은 객체가 사용할 다른 객체를 직접 생성하지 않고, 외부에서 주입받는 방식을 말합니다.스프링에서는 컨테이너(ApplicationContext)가 객체를 Bean으로 관리하고, 필요한 곳에 자동으로 주입해주기 때문에 @Autowired나 생성자 주입을 통해 쉽게 DI를 구현할 수 있습니다. 2. 왜 필요한가? (순수 자바 관점)순수 자바에서 보자면, 클래스가 의존 객체를 직접 생성하는 경우 테스트와 유지보수가 어렵습니다. 의존성을 직접 생성하는 경우class A { private B b = new B(); // A가 B를 직접 생성 public void doSomething() { b.work(); ..
BindingResult- 스프링 프레임워크에서 데이터바인딩과 검증결과를 담는 인터페이스 주요 역할1. 데이터 바인딩 오류 수집- HTTP 요청 데이터를 객체로 변환할 때 발생하는 오류들을 수집2. 검증(Validation) 결과 저장- @Valid 어노테이션으로 수행된 검증 결과를 저장 사용 방법@PostMapping("/cart")public ResponseEntity addCart( @RequestBody @Valid CartItemDto cartItemDto, BindingResult bindingResult) { if (bindingResult.hasErrors()) { Map errors = new HashMap(); bin..
리버스 프록시란?- 클라이언트와 서버 사이에 위치해서 서버를 대신해 클라이언트의 요청을 받고 처리하는 중간 서버 특징- 클라이언트 입장에서는 리버스프록시가 실제 서버처럼 보임. 실제 백엔드 WAS 서버는 클라이언트로부터 숨겨진다.- 서버측들을 보호하고 대표하는 역할. 리버스 프록시의 주요 기능- 어느 백엔드로 보낼 지 라우팅 결정- 캐싱 - 정적 컨텐츠, 동적 컨텐츠(API 응답) 캐싱 - 보안(백엔드 서버 은닉)- SSL 종료(클라이언트가 HTTPS로 요청을 전송하면 리버스 프록시가 SSL/TLS 연결을 받아서 복호화 HTTP로 백엔드 서버에 전달, 다시 백엔드가 응답하면 HTTPS로 암호화해서 클라이언트에 전달) 캐싱 설정 예시proxy_cache_path /var/cache/nginx lev..
Pagination 개념- 웹사이트에서 데이터를 페이지별로 나누어서 표시하는 기술 Pagination 사용 이유- 페이지네이션을 사용하는 이유는 크게 Engineering 관점에서 성능향상과 사용자 관점에서 사용자 경험 개선이 있다.- 보통 데이터는 데이터베이스에 저장해두고 사용하는데 데이터베이스를 통해 대량의 데이터를 한 번에 요청하고 이를 다시 클라이언트로 전송하려면 네트워크를 많이 이용해야하고 그러면 결국 페이지 로딩 속도가 저하될 수밖에 없다. 그래서 페이지별로 데이터를 그룹화해서 원하는 만큼의 데이터를 요청하고 응답하면서 성능을 향상시킬 수 있다. 이렇게 되면 사용자가 페이지별로 원하는 데이터를 쉽게 탐색하고 검색할 수 있다. Pagination에서 사용되는 용어- page number : 데이..
Spring 6.2.11 버전 공식문서를 참고하여 작성하였습니다. @Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**") .addResourceLocations("/public", "classpath:/static/"); }} "/resource"로 시작하는 요청이 있다면 그 다음에 설정된 상대경로 "/public"(루트 아래의 상대경로로 "/public" ), "classpath:/static/"(cl..
Spring 공식문서 6.2.11 버전 공식문서 정리 내용입니다.(250915 작성 기준)@RequestParam- 컨트롤러의 메서드 인자에 Servlet request parameter를 바인딩 하게 해주는 어노테이션- query parameter와 form data를 처리할 수 있다.- 어노테이션 선언시 인자값은 필수지만, required = false 로 옵션으로 변경 가능하다. 1. query paramter 처리하는 예제@Controller@RequestMapping("/pets")public class EditPetForm { // ... @GetMapping public String setupForm(@RequestParam("petId") int petId, Model model) { ..
영속성 전이, cascade- 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션 CASCADE 종류 설명PERSIST부모 엔티티가 영속화될 때 자식 엔티티도 영속화MERGE부모 엔티티가 병할될 때 자식 엔티티도 병합REMOVE부모 엔티티가 삭제될 때 연관된 자식 엔티티도 삭제REFRESH부모 엔티티가 refresh되면 연관된 자식 엔티티도 refreshDETACH부모 엔티티가 detach되면 연관된 자식 엔티티도 detach 상태로 변경ALL부모 엔티티의 영속성 상태 변화를 자식 엔티티에 모두 전이 Order Entity가 있고, OrderItem Entity가 있을 때 Order Entity가 OrderItem Entity를 참조하고 있을 때 Order Entity..
내부 동작 흐름 정리 상황 설명 Order 엔티티가 있고, Order와 일대다 관계를 맺는 orderItem 엔티티를 cascde.all로 설정 해두었다. 이 상태에서 orderRepository.save(order)메서드를 정리하려고 한다.package com.shop.entity;import com.shop.contant.OrderStatus;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;import java.time.LocalDateTime;import java.util.ArrayList;import java.util.List;@Entity@Table(name = "orders")@Getter@Setterpublic ..