본문 바로가기

전체 글

(40)
IP, TCP, UDP 프로토콜 1. TCP/IP 4계층 OSI 7계층을 줄인것입니다. 4계층: 애플리케이션 계층 웹브라우저, 게임같은 사용자와 가장 가까운 계층입니다. 프로토콜 : HTTP, FTP 3계층: 전송 계층 통신 노드간 신뢰성 있는 데이터를 전송을 보장하는 계층입니다. 프로토콜: TCP, UDP 2계층: 인터넷 계층 패킷을 최종 목적지까지 라우팅하는 계층입니다. 프로토콜: IP 1계층: 네트워크 액세스 계층, 네트워크 인터페이스 계층 실질적으로 데이터를 전송하는계층, 데이터를 전기신호로 변환한 뒤, 물리적 주소는 MAC주소를 사용해, 알맞은 기기로 전달하는 계층 입니다. 프로토콜: Ethernet, wi-fi 2. IP 프로토콜 지정한 IP주소에 데이터를 전달 패킷이라는 통신 단위로 데이터 전달 패킷 정보 출발지 IP, 목..
[SPRING] Bean 스코프란 기본적으로 Bean은 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때 까지 유지됩니다. 스프링 빈이 기본으로 싱글톤 스코프로 생성되기때문입니다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻합니다. 싱글톤 스코프: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지 되는 가장 넓은 범위의 스코프 프로토타입 스코프: 스프링 컨테이너는 프로토 타입 빈 생성과 의존관계 주입 까지만 관여하고 더이상 관리하지 않음 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될때 까지 유지 application: 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프
[SPRING] DI시 중복 Bean을 다 사용 하고 싶을 때 해결 방법 할인 서비스가 있을때, 클라이언트가 할인의 종류(fix, rate)를 선택할 수 있는 전략 패턴이 있습니다. Map 으로 모든 Bean을 가져와 map.get으로 해당 Bean을 조회해 사용 합니다. public class AllBeanTest { @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "park", Grade.VIP); int ..
[SPRING] DI시 중복 Bean 오류 해결 방법 1. 조회 대상 빈이 2개 이상일 때 해결방법 @Autowired 필드 명 매칭 @Quilifier -> @Quilifier 끼리 매칭 -> 빈 이름 매칭 @Primary 사용 @Autowired 필드 명 매칭 @Autowired 가 여러 개일 때 구체 클래스의 명으로 변경해서 사용합니다. @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy rateDiscountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = rateDiscountPolicy; } @Quilifier 추가 구분자를 제공, 주입시 빈 이름을 변경하는 것이 아..
[SPRING] 의존관계 주입 DI 1. 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 클래스 생성자를 통해 의존 관계를 주입 받는 방법입니다. 생성자로만! 생성자 호출 시점에 최초 1번만 호출된다. "불변, 필수" 의존관계에 사용 오직 생성자 주입 방식에만 final 키워드를 사용할 수 있다. 생성자 주입을 권장 필수 값이 아닐 경우, 수정자 주입 방식Optional을 사용한다. 생성자, 수정자 방식 동시에 사용 가능 @Component public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository; @Autowired public MemberServic..
싱글톤 패턴 싱글톤 패턴 생성 방법 1. Eager Initialization public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } } 가장 간단한 방법이며 static을 통해 해당 클래스를 Class Loader가 로딩할 때 객체를 생성해 줍니다. 하지만 이 방법은 객체를 사용하지 않더라도 객체가 무조건 생성되기 때문에 자원 낭비가 될 수 있는 단점이 존재하며, 또한 Exception에 대한 처리를 하지 않습니다..
[SPRING] 스프링 컨테이너에 등록 된 Bean 출력하기 package hello.core.beanFind; import hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.AnnotationConfigApplicationContext; class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(App..
[SPRING] IoC, DI, 컨테이너 1. IoC 제어의 역전 (Invertion of Control) 기존 프로그램은 클라이언트 구현 객체가 스스로 필요하 서버 구현 객체를 생성하고 ,연결하고, 실행했다. 반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. 예를 들어 OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라고 한다. 2. 의존관게 주입 DI(Dependency Injection) 의존관계는 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체 의존 관계가 있습니다. - 정적인..