전체 글
-
Spring - 동일 타입의 빈이 2개 이상일 경우 의존관계 주입 방법Spring/Spring 2022. 1. 24. 12:32
동일 타입의 빈이 2개 이상일 경우 의존관계 주입 시 오류가 발생 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } } ... @Componen..
-
Spring - 다양한 의존관계 주입 방법(생성자 주입, 수정자 주입, 필드 주입)Spring/Spring 2022. 1. 24. 12:31
의존관계 주입 방법 생성자 주입 수정자 주입 (setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입하는 방법 생성자 호출 시점에 딱 1번만 호출되는 것을 보장한다. 불변, 필수 의존관계에 사용 불변 : 한번 주입하면 주입된 인스턴스는 변하지 않는 것을 보장 필수 : 주입받는 필드에 final 키워드를 이용함으로써 반드시 주입받아야 되는 것을 보장 @Autowired를 생략해도 자동 주입이 된다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discoun..
-
PORT와 DNS(Domain Name System)개발자로서 알아야 할 CS/HTTP 웹 기본 지식 2022. 1. 24. 00:36
PORT란 같은 IP 내에서 프로세스를 구분해준다. 네트워크 서비스나 특정 프로세스를 식별하는 논리적 단위 즉, 컴퓨터에 여러 개의 서버가 실행되고 있다면, 어느 서버에 접속해야 하는지 알려주는 방법 DNS(Domain anme System) 웹사이트의 IP 주소와 도메인 주소를 이어주는 환경/시스템 참조 강의 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 학습 페이지 (inflearn.com) 모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 학습 페이지 지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요.... www.inflearn.com
-
TCP(Transmission Control Protocol)란?개발자로서 알아야 할 CS/HTTP 웹 기본 지식 2022. 1. 24. 00:13
TCP란? transport 계층의 대표적인 연결지향 프로토콜 하위 계층에서의 (network, datalink 계층) 패킷 손실, 중복 오류 등 모든 전송 문제를 검출하고 해결 IP의 한계인 비연결성, 비신뢰성 해결 TCP의 구조 발신지 포트(Source Port) : 패킷을 송신하는 시스템의 포트번호 EX) HTTP(80) 목적지 포트(Destination Port) : 패킷을 수신할 시스템의 포트번호 순차 번호(Sequence Number) : 각 세그먼트의 첫 번째 바이트에 부여되는 번호 응답 확인 번호(Acknowledge Number) : 수신한 세그먼트의 확인 응답을 위한 필드 헤더 길이(Header Length) : TCP 헤더 길이를 나타내는 필드 TCP 제어 플래그(TCP Control..
-
Spring - 컴포넌트 스캔(Component Scan)Spring/Spring 2022. 1. 23. 21:47
컴포넌트 스캔(Component Scan) 스프링 빈을 등록할 때 @Bean 어노테이션을 이용하여 설정 정보에 직접 등록할 스프링 빈을 나열했다. 등록해야 할 스프링 빈이 많을 경우에는 설정 정보도 커지고 누락하는 문제가 발생한다. 이러한 문제를 해결하기 위해 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록해주는 컴포넌트 스캔이라는 기능을 제공한다. 의존 관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. 컴포넌트 스캔을 하게 되면 AppConfig에서 해주었던 빈 등록을 하지 않아도 된다. 대신 @Component 어노테이션이 붙은 클래스를 스캔하여 스프링 빈으로 등록하게 된다. 컴포넌트 스캔은 해당 패키지부터 하위 패키지까지 스캔해준다. @Configuration @Compone..
-
Java - 클래스패스(ClassPath)Java/java study 2022. 1. 23. 17:21
클래스패스(ClassPath) 클래스를 찾기위한 경로이다. JVM이 프로그램을 실행할 때, 클래스 파일을 찾는데 기준이 되는 파일 경로를 말한다. 소스 코드(.java)를 컴파일하면 바이트 코드(.class)로 변환이 되는데 java 또는 jre으로 이 바이트 코드 파일에 포함된 명령어를 실행하려면 먼저 이 바이트 코드 파일을 찾아야 한다. 이때 바이트 코드(.class) 파일을 찾을 때 classpath에 지정된 경로를 사용한다. 클래스패스는. class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다. java runtime은 이 classpath에 지정된 경로를 모두 검색해 .class 파일을 찾는다. 클래스패스를 지정할 수 있는 방법 java runtime 에 -classpath 옵션 사..
-
Java - package 키워드, import 키워드와 접근제어자(Access Modifier)Java/java study 2022. 1. 23. 17:02
package 클래스의 묶음으로서 하나의 디렉토리(폴더)이다. 패키지는 클래스를 유일하게 만들어주는 식별자 역활을 한다. 클래스의 전체 이름은 "패키지명 + 클래스"이며 FQCN(Fully Qualified Class Name)이라고 한다. ex) String 클래스의 패키지 : java.lang, FQCN : java.lang.String 패키지가 상, 하위로 구분되어 있다면 도트( . )를 사용하여 표현한다. 비슷한 성격의 자바 클래스들을 모아서 폴더 단위로 관리하기 때문에 유지 보수가 용이해진다. 패키지 이름 명명 규칙 패키지 이름은 모두 소문자여야 한다. 자바의 예약어를 사용하면 안된다.(int, static 등) 빌트-인 패키지(Built-in Package) 자바 가상머신에 의해 자동포함처리되..
-
Spring - 싱글톤 컨테이너Spring/Spring 2022. 1. 23. 16:05
싱글톤 컨테이너 웹 어플리케이션은 싱글톤을 사용한다. 그 이유는 웹 어플리케이션을 이용하는 사람은 1명이 아닌 여러 사람이 동시 다발적으로 이용한다. 때문에 싱글톤을 사용하지 않으면 n명의 고객이 웹 요청시 n개의 인스턴스를 만들어 메모리 낭비가 심해지기 때문이다. 이제 순수 DI 컨테이너부터 만들어가며 왜 싱글톤 컨테이너가 필요한지 알아보자. 순수 DI 컨테이너 앞에 블로깅한 코드에서 스프링 컨테이너를 사용하지 않으면 어떻게 될까? 테스트를 해보자. @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); MemberService memberService1 = appConfig...