본문 바로가기

반응형

전체

(121)
@ModelAttribute vs @RequestBody Spring Boot에서 클라이언트와 서버 사이에서 JSON으로 데이터를 주고받기 위해서는 주로 @RequestBody를 사용합니다. @RequestBody는 HTTP 요청 본문(body)에 포함된 JSON 데이터를 Java 객체로 변환해주는 역할을 합니다. 반면 @ModelAttribute는 주로 폼 데이터나 쿼리 파라미터를 객체로 바인딩할 때 사용됩니다.@RequestBody와 @ModelAttribute의 차이@RequestBody용도: HTTP 요청 본문에 포함된 JSON, XML, 또는 다른 형식의 데이터를 Java 객체로 변환할 때 사용합니다.변환: HttpMessageConverter를 사용하여 요청 본문을 Java 객체로 변환합니다. 기본적으로 JSON 처리를 위해 MappingJackso..
CI/CD란 무엇인가 CI ( Continuous Integration) : 지속적 통합CD ( Continuous Delivery/Deployment) :  지속적 제공/배포 CI, 지속적 통합은 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미합니다.(가능하다면 하루에 여러번까지) CI는 언제 필요한가?다수의 개발자가 형상관리(Git,SVN) 툴을 공유하여 사용하는 환경MSA(Micro Service Archietecture) 환경CI의 핵심 목표는버그를 신속하게 찾아 해결하고소프트웨어의 품질을 개선하고새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있다.  CD는 Continuous Delivery 혹은 Continuous Deployment 두 용어..
RESTful API 란 무엇인가?? REST(REpresentational State Transfer) 정의 :REST는 웹 서비스가 어떻게 동작해야 하는지에 대한 아키텍처 스타일 또는 설계 원칙입니다. REST는 클라이언트와 서버 간의 상호작용을 규정하며, 여러 가지 원칙과 제약 조건들을 가지고 있습니다. 예를 들어, REST는 상태를 가지지 않는(stateless) 통신, 캐시 가능한 응답 등을 지향합니다. RESTful API 정의 : RESTful API는 REST 아키텍처 스타일을 따르는 웹 API이다. 즉, REST 원칙을 잘 지키며 설계된 API를 RESTful API 라고 합니다.  비교REST는 이론적인 원칙과 가이드라인 입니다.RESTful API는 그 원칙관 가이드라인을 실제로 적용한 API를 의미합니다.Rest는 일종..
SpringBoot TDD 끄적끄적 Spring 으로 TDD 개발 할 때....JPA 레퍼지토리를 테스트하기 위해서는 @DataJpaTest 어노테이션을 테스트 클래스에 추가해줘야한다.@DataJpaTest은 기본적으로 H2 DATABASE를 기본으로 한다Repository -> Service -> Controller 순으로 테스트주도개발 하는 것을 추천한다. Repository는 구현할 메서드가 없는 통합테스트에 가깝기 때문에 테스트하기 쉽다. 또 Repository가 안정되면 나머지 계층의 테스트도 안정적으로 작성할 수 있다. Spring 으로 Mockito 라이브러리의 핵심 메소드 !! when, verifywhen 메소드when 메소드는 모킹된 객체의 특정 메소드가 호출될 때 그 메소드의 동작을 정의합니다. 예를 들어,when(us..
Spring Boot 끄적끄적(4) AssertJ란?테스트에 관련된 많은 기능을 제공하고 메서드 체이닝으로 가독성 높은 테스트 코드 작성을 지원하는 오픈 라이브러리입니다. assertThat(검증대상)로 시작하며 메서드 체이닝을 이용하여 검증 메서드를 연쇄적으로 더 깔끔하고 가독성 있게 테스트 코드를 작성할 수 있습니다.asserThat이 가독성이 조금 더 좋다고 합니다.  Optional 올바르게 사용하기1. Optional 변수에 절대로 null 을 할당 하지 말 것나쁜 예 : OptionalMember> findById(Long id) {     // find Member from db     if (result == 0) {         return null;     } }  좋은 예 : Optional findById(Long ..
Spring boot 끄적끄적(3) 스프링 공부하면서 배운 것들 총 집합~~타임리프 th:value와 th:field의 충돌 이렇게 쓰려고 하니 session.member.name값이 출력이 안되었다. 알고보니 두 문법이 충돌되서 value가 무시된다고 한다. HTML a 태그는 GET 방식 밖에 못 쓴다이유는 모르겠다 그렇단다 @RequestMapping   공통적인 url은 class에 @RequestMapping 으로 설정해 줄 수 있다!!@RestController@RequestMapping(value = "/hello")public class HelloController { @GetMapping() public String helloGet(...) { ... } @PostMapping() p..
NoSQL vs SQL 선착순 쿠폰 이벤트 개발을 위해서 NoSQL 중 일종인 Redis를 사용해야 하는가?? 아니면 MySQL로 JPA에서 지원하는 LOCK을 사용해야 하는가?? LOCK을 사용한다면 비관적 락 (Pessimistic Lock) vs 낙관적 락 (Optimistic Lock) 어떤걸 사용해야 하는가?비관적 락(Pessimistic Lock)비관적 = 앞으로의 일이 잘 안될 것이라고 보는 것.트랜잭션 충돌이 발생한다는 가정하에 우선 락을 걸고 보는 방식데이터베이스에서 사용하는 락 사용 (PESSIMISTIC_FORCE_INCREMENT 모드가 아니라면, 버전 정보 사용안함)SELECT ~ FOR UPDATE 구문 사용낙관적 락 (Optimistic Lock)낙관적 = 앞으로의 일 따위가 잘되어 갈 것으로 여기는..
Spring boot 끄적 끄적(2) 1. 엔티티로 객체를 생성할때.....   이렇게 설정해주면 따로 id 값을 지정하고, 뭐 id++ 하면서 저장할 필요 없이 알아서 생성해준다@Id 는 DB에서 Primary Key를 의미한다참고로 @Entity 객체 안에는 @Id를 가지 변수가 존재해야 한다.JPA는 이 어노테이션을 통해 각각의 객체를 구분한다 @GeneratedValue를 통해 Id 생성 전략 설정 가능하다IDENTITY : 기본키 생성을 DB에 위임한다. mysql 은 AUTO_INCREMENT 이다.@Column을 통해 테이블의 Id가 DB에 매핑될때 컬렴명이 "user_id" 로 매핑된다. 2. @Enumerated 어노테이션이란?  생각해보니 DB 테이블의 컬럼의 도메인 값은 보통 뭐 VAR CHAR(15) 또는 , INT 이..

반응형