- [ 정리/Spring ][Spring] 스프링 MVC 1편 1) 웹 애플리케이션의 이해2023-10-31 09:32:43스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 1 웹 애플리케이션 이해 1. 웹 서버, 웹 애플리케이션 1) 웹서버 HTTP 기반으로 동작 정적 리소스(HTML, CSS, JS, 이미지, 영상) 제공 2) 웹 애플리케이션 서버 WAS HTTP 기반으로 동작 웹서버 기능(정적 리소스 제공) + 코드 실행해 애플리케이션 로직 수행 ▶동적 HTML, HTTP API(JSON) ▶서블릿, JSP, 스프링 MVC 3) 웹 서버와 웹 애플리케이션 서버의 차이 웹서버도 프로그램 실행 기능 포함, WAS도 웹서버 기능을 포함해서 서로 경계가 애매하지만 WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다 4) 웹 시스템 구성 ▶WAS, DB WAS에 많은 역할로 인한 서버 과부하 우려 가장 비싼 애플..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 3) HTTP 기본2023-10-31 09:13:11HTTP 웹 기본 지식 Session 3 HTTP 기본 1. 모든 것이 HTTP 1) HTTP(HyperText Transfer Protocol) HTTP 메시지에 모든 것을 전송(HTML, JSON, XML, 이미지, 음성, 영상, 파일 등) 거의 모든 형태의 데이터 전송가능 서버 간에 데이터를 주고받을 때도 대부분 HTTP 사용 2) HTTP 역사 HTTP/0.9 : GET 메서드만 지원, HTTP 헤더 없음 HTTP/1.0 : 메서드, 헤더 추가 HTTP/1.1 : 가장 많이 사용, 중요한 버전 HTTP/2 : 성능개선 HTTP/3 : 진행중, TCP대신 UDP사용, 성능 개선 3) 기반 프로토콜 TCP : HTTP/1.1, HTTP/2 UDP : HTTP/3 현재 HTTP/1.1 주로 사용 ▶ 2..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 2) URI와 웹브라우저 요청 흐름2023-10-30 09:55:57HTTP 웹 기본 지식 Session 2 URI와 웹 브라우저 요청 흐름 1. URI 1) URI(Uniform Resource Identifier) URI = URL + URN Uniform : 리소스 식별하는 통일된 방식 Resource : 자원 URI로 식별할 수 있는 모든 것(제한 없음) Identifier : 다른 항목과 구분하는데 필요한 정보 2) URL, URN URL(Uniform Resource Locator) : 리소스가 있는 위치를 지정 URN(Uniform Resource Name) : 리소스에 이름을 부여 위치는 변할 수 있지만, 이름은 변하지 않는다. URN만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음 URI를 URL과 같은 의미로 생각하고 이해! 3) URL 전체..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 1) 인터넷 네트워크2023-10-29 09:37:01HTTP 웹 기본 지식 Session 1 인터넷 네트워크 1. 인터넷 통신 클라이언트와 서버가 가까이 있으면 케이블로 연결하여 통신할 수 있다. 클라이언트와 서버사이에 인터넷이 있으면 인터넷망을 통해 서로 통신 클라이언트는 복잡한 인터넷망 내부의 중간 노드(서버)를 거쳐 서버와 통신하는데 어떤 규칙으로 통신이 되는 건지 IP에 대해 학습 2. IP(인터넷 프로토콜) 복잡한 인터넷망에서 통신을 하기 위해서 IP 주소 부여 1) IP 인터넷 프로토콜 역할 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 2) IP 패킷 정보 전송데이터와 함계 출발지, 목적지 IP와 기타 정보를 묶어 패킷 단위로 데이터를 전달 3) 클라이언트 패킷 전달 출발 IP와 목적 ..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 9) 빈 스코프2023-10-28 09:58:55스프링 핵심 원리 - 기본편 Session 9 빈 스코프 1. 빈 스코프란? 1) 빈 스코프란? 이전 강의까지 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지된다고 배웠다. 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문. 스코프는 빈이 존재할 수 있는 범위를 의미한다. 2) 스프링이 지원하는 스코프 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더 이상 관여하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때까지 유지..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 8) 빈 생명주기 콜백2023-10-27 09:47:16스프링 핵심 원리 - 기본편 Session 8 빈 생명주기 콜백 1. 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 것을 미리 연결하고 종료시점 연결을 모두 종료하려면 객체의 초기화와 종료 작업이 필요하다. 1) NetworkClient 작성 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두고, 종료되면 disConnect() 호출해서 연결을 끊어야 한다. 2) 테스트 코드 작성 ac.close() ▶ 스프링 컨테이너를 종료, ConfigurableApplicationContext 필요 3) 테스트 실행 생성자 호출, url = null connect: null call: null message = 초기화 연결 메시지 생성자 부분을 ..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 7) 의존관계 자동 주입2023-10-26 09:21:35스프링 핵심 원리 - 기본편 Session 7 의존관계 자동 주입 1. 다양한 의존 관계 주입 방법 1) 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 2) 생성자 주입 생성자를 통해서 의존 관계를 주입받는 방법 생성자 호출 시점에 딱 1번만 호출되는 것이 보장됨, 불변, 필수 의존 관계에 사용 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입된다 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Auto..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 6) 컴포넌트 스캔2023-10-23 10:51:24스프링 핵심 원리 - 기본편 Session 6 컴포넌트 스캔 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 1) 컴포넌트 스캔 @Bean이나 XML의 등을 통해 설정 정보에 직접 스프링 빈을 나열했다 → 스프링 빈이 수백개가 되면 설정 정보도 커지고 누락 등의 문제가 생김 스프링은 자동으로 스프링 빈을 등록해주는 컴포넌트 스캔이라는 기능을 제공해주고 의존관계도 자동으로 주입해주는 @Autowired라는 기능도 제공한다. 2) AutoAppConfig 생성 @Configuration @ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppCo..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 5) 싱글톤 컨테이너2023-10-22 13:43:42스프링 핵심 원리 - 기본편 Session 5 싱글톤 컨테이너 1. 웹 애플리케이션과 싱글톤 1) 스프링이 없는 순수한 DI 컨테이너 웹 애플리케이션은 보통 여러 고객이 동시에 요청한다. 요청할 때마다 객체가 생성해 메모리 낭비가 심한 문제점이 있다. 객체 하나만 생성되고 공유하도록 설계해야 한다. ▶ 싱글톤 패턴 2) 순수한 DI컨테이너 테스트 // 구성정보 클래스인 AppConfig에서 객체를 가져온다. AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.membe..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 4) 스프링 컨테이너와 스프링 빈2023-10-21 15:53:17스프링 핵심 원리 - 기본편 Session 4 스프링 컨테이너와 스프링 빈 1. 스프링 컨테이너 생성 1) 스프링 컨테이너 생성 ApplicationContext appllicationContext = new AnnotaionConfigApplicationContext(AppConfig.class); ApplicationContext : 스프링 컨테이너라고 하고 인터페이스임 AppConfig에 @Configuration 붙여서 만든 것이 애노테이션 기반의 설정 클래스를 만들어 스프링 컨테이너를 만든 것 2) 스프링 컨테이너 생성과정 new AnnotationConfigApplicationContext(AppConfig.class)로 스프링 컨테이너 생성 매개변수로 구성정보를 지정해줌 스프링 컨테이너는 매..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 3) 스프링 핵심 원리 이해2 - 객체 지향 원리 적용2023-10-18 18:21:27스프링 핵심 원리 - 기본편 Session 3 스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 1. 새로운 할인 정책 개발 1) 새로운 할인 정책 정액 할인에서 정률 % 할인 정책으로 변경 회원 등급이 VIP인 경우 10% 할인 FixDiscountPolicy에서 RateDiscountPolicy로 변경 2. 새로운 할인 정책 적용과 문제점 1) 문제점 역할과 구현을 충실하게 분리, 다형성도 활용하고 인터페이스와 구현 객체도 분리했으나 DIP, OCP 같은 객체 지향 설계 원칙을 위배 DIP : 주문 서비스 클라이언트는 추상(인터페이스)뿐만 아니아 구현 클래스에도 의존 OCP : 기능을 확장해서 변경하면 클라이언트 코드에 영향 있음 public class OrderServiceImpl implemen..
- [ 정리/Spring ][Spring] 스프링 핵심 원리 기본편 2) 스프링 핵심 원리 이해12023-10-18 12:04:00스프링 핵심 원리 - 기본편 Session 2 스프링 핵심 원리 이해 1 - 예제 만들기 1. 비즈니스 요구사항과 설계 1) 회원 회원 가입하고 조회가능 회원 등급은 일반과 VIP 두 가지 회원 데이터는 자체 DB 구축할 수 있고, 외부 시스템과 연동할 수 있다(미확정) 2) 주문과 할인 정책 회원은 상품 주문 가능 회원 등급에 따라 할인 정책 적용 가능 할인 정책은 VIP는 1000원 할인해 주는 고정 금액 할인 적용(나중에 변경될 수 있음) 할인 정책은 변경 가능성 높음, 기본 할인정책 미정상태고 최악의 경우 할인을 적용하지 않을 수도 있음 ▶ 할인 정책이 미정이기 때문에 인터페이스를 만들고 구현체로 언제든지 변경 가능하게 설계 2. 회원 도메인 설계 1) 회원 도메인 요구사항 회원 가입하고 조회가능..