분류 전체보기

JPA를 사용하고 나서 @Builder를 쓰기 시작했는데 자세히 이게 무슨 역할을 하는지 몰랐었다. 그래서 오늘 간단하게 @Builder 어노테이션에 대해 정리를 해보려고 한다. 우선 JPA를 사용하고나서부터 패키지의 구조가 많이 변경됐다. Entity - DB 테이블과 1:1 매칭하는 클래스Repository - 해당 Entity에 대한 CRUD를 제공한다.Service - 기존에는 Service 인터페이스와 그걸 구현한 ServiceImpl 클래스를 만들었는데, JPA로 바꾸고 나서는 해당 Entity에 대한 클래스만 생성한다. Entity에 대한 비즈니스 로직을 수행한다.DTO - 클라이언트와 서버 간에 정보를 전송하기 위한 클래스다. Entity를 받아서 전송해도 되지만 문제점이 있다!1. 클라이..
김영한 강사님의 강의를 보다가 나중에 복습하는데 갑자기 이 생각이 떠올랐다. @Configuration 어노테이션은 이 클래스가 스프링의 설정 클래스라고 알려준다. 그 안에서 @Bean 어노테이션이 붙은 애들을 찾아서 빈으로 등록하게 되는데 만약에 @Configuration이 없이 @Bean만 붙어있으면 어떻게 될까? 처음에 gpt한테 물어봤었다. 내가 자주 애용하는 GPT는 @Configuration이 붙어있지 않으면 @Bean이 붙은 애들을 빈으로 등록하지 않는다고 설명했다.(3.5버전) 그런데 인터넷 찾아보니 내용이 또 달랐는데.. 지금부터 정리를 해보자. 기존에는 @Configuration이 붙은 클래스를 찾아서 그 안에 @Bean이 붙은 애들을 스프링 컨테이너 빈으로 등록했다. 이 때 스프링은 ..
JSP(Java Server Page) 기존에는 서블릿을 이용해서 화면에 보여주는 html도 만들고 안에서 로직도 처리했는데 코드가 많이 복잡해지니깐 뷰 템플릿을 사용하기 시작했다.(대표적인 템플릿이 JSP, Thymeleaf) JSP는 HTML 코드 안에 자바 코드를 넣어서 동적 웹페이지를 생성하게 해주는 도구다. JSP가 실행되면 자바 서블릿(Servlet)으로 변환되어 필요한 기능을 수행하고 response에 담아서 was에 넘기는 것이다. 이렇게 보면 JSP와 서블릿은 되게 유사하지만 큰 특징이 하나 있다. JSP - HTML 코드 내부에 자바 코드를 넣어 동적으로 웹페이지를 생성. 서블릿 - 자바 코드 내에서 HTML 생성. 간단하게 코드로 비교해보자. 서블릿 코드 @WebServlet(name..
서블릿 동적 웹페이지(Dynamic Web Page)를 만들 때 사용되는 자바 기반의 웹 어플리케이션 프로그래밍 기술이다. 클라이언트가 서버로 요청을 보낼 때 다양한 요청과 응답을 주고 받는데, 이 요청과 응답에는 규칙이 존재한다. 이걸 개발자가 일일이 처리하려면 굉장히 귀찮기 마련인데, 서블릿은 이러한 웹 요청과 응답의 흐름을 간단하게 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술이다. 우선 톰캣 내장서버를 활용하기 위해 스프링 부트로 설명하겠습니다. 스프링부트가 내장 톰캣 서버를생성하고, 톰캣 서버는 서블릿 컨테이너 안에 해당 서블릿을 생성하게 됩니다. 톰캣 서버가 서블릿을 생성하는 방법은 @ServletComponentScan 어노테이션을 이용해서 만듭니다. @ServletComponent..
HTTP의 주요 메서드는 5가지가 있다. GET POST PUT PATCH DELETE 1. GET 리소스를 조회할 때 사용 서버에 같이 전달하고 싶은 데이터는 query(쿼리 스트링)에 담아서 전달. GET 방식도 HTTP body에 데이터를 담아서 전송할 수 있지만!!! 지원하지 않는 곳이 많아서 권장하지는 않음. 클라이언트가 서버에게 /members/100 주소로 GET요청을 보냈다. 서버에 도착하게 되면 서버는 GET요청이기 때문에 해당 주소에 있는 데이터를 꺼내서 response을 보내는데 body에 담아서 보낸다. 클라이언트는 서버로부터 HTTP body에 담겨 있는 리소스를 조회하게 된다. 2. POST 요청 데이터를 처리 HTTP body에 데이터를 넣어서 서버로 전달. 서버는 요청 데이터..
TCP(Transmission Control Protocol) - 전송 제어 프로토콜 연결 지향 (3 way handshake, 가상 연결) 데이터 전달 보증 순서 보장 요즘은 대부분 TCP를 사용한다. TCP 세그먼트는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등 추가 정보를 담는다. 요즘은 위 사진처럼 TCP/IP 패킷이라고 묶어서 부른다. TCP는 클라이언트와 서버가 연결이 됐는지 3단계의 확인 절차를 가진다. 클라이언트가 서버에게 SYN을 보냄. 서버가 클라이언트의 SYN을 받으면 거기에 ACK라는 대답을 추가해서 클라이언트에게 보냄. 클라이언트는 서버에게 응답 신호를 받으면 다시 서버에게 ACK를 보내줌. 이 3단계를 거치면 클라이언트랑 서버가 연결됐다고 보는 것이다.(..
IP(Internet Protocol) 지정한 IP 주소에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보 : 출발지 IP, 목적지 IP, 기타.... 위 사진처럼 패킷에 출발지 IP, 목적지 IP, 기타 등등을 넣어서 패킷으로 보낸다. 클라이언트가 서버에 보낸 패킷을 서버가 제대로 받으면 서버도 클라이언트에게 받았다는 신호를 패킷으로 보내준다. 그런데 IP 프로토콜은 한계점이 있다. 비연결성 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송(받는 사람이 없어도 일단 보낸다) 비신뢰성 중간에 패킷이 사라지면? 패킷이 순서대로 안 오면? 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?? 대상이 서비스 불능일 경우 대상이 서비스가 불가..
조회 대상 빈이 2개 이상일 때 해결 방법은 총 3가지가 있다. 1. @Autowired 필드 명 매칭 2. @Qualifier 3. @Primary 이 글에서는 2, 3번에 대한 방법을 소개한다. @Qualifier 추가 구분자를 붙여주는 방식이다. 빈 이름을 변경하는 것이 아니다!! 우선 컴포넌트로 등록하는 클래스에 @Qualifier("지정할 이름") 으로 명시해준다. @Component @Qualifier("main") public class FixDiscountPolicy implements DiscountPolicy{ private int discountFixAmount = 1000; // 1000원 할인 고정 @Override public int discount(Member member, i..
indeep
'분류 전체보기' 카테고리의 글 목록 (17 Page)