위 문제를 해결하는 방법\-> 커넥션을 미리 생성해두고 재사용하는 커넥션 풀 이 있다커넥션 풀 : DB와 커넥션이 연결되어 있는 상태로 즉시 SQL을 DB에 전달 가능 커넥션 풀은 서버당 최대 커넥션 수를 제한할 수 있어서 DB를 보호해줌실무에서 항상 기본으로 사용됨대
정적 중첩 클래스 : static이 붙고 바깥 클래스의 인스턴스에 소속되지 않는다정적 중첩 클래스는 다른 클래스를 중첩해둔 것 뿐이며, 둘은 아무런 관계가 없다쉽게 말해서 클래스 2개를 따로 만든것과 같다그러므로 내부에 있는 객체만 생성해도됨유일한 차이점은 privat
java.util.Date : JDK 1.0java.util.Calendar : JDK 1.1Joda-Time : 외부라이브러리로 자바 표준에 포함되지 않아서, 프로젝트에 별도로 추가해야함java.time 패키지 : JDK 1.8(자바8)에서 위 Joda-Time 을
enumeration의 줄임말으로 열거 라는 뜻임자바는 타입 안전 열거형 패턴을 제공한다열거형을 정의할 때는 class 대신 enum 을 사용하고 원하는 상수의 이름을 나열한다위처럼 자바의 열거형으로 작성한 Grade는 다음 밑의 코드와 같다열거형도 클래스이다열거형은
✅ 불변 객체가 도입된 이유 객체를 공유할 수 있는 것을 막기 위해서 ✅ 불변 객체 객체의 상태(내부의 값, 필드, 멤버변수)가 변하지 않는 객체 만드는 방법 final 키워드를 붙인다. Setter 를 만들지 않는다. 💡 red
✅ Object 클래스 자바의 최상위 클래스 Object 클래스가 최상위인 이유? -> 객체의 정보, 비교, 확인 등 자주 사용하는 기본 기능들을 일일이 만들기 힘듬 -> 모든 객체에 필요한 공통기능을 편리하게 제공하기 위해서 만들어짐 ✅ 종류 toString()
지역 변수에 설정시 최초 한번만 할당 가능할당 이후 변수 값 변경시 컴파일 오류 발생매개변수에 final 붙으면, 메서드 내부에서 매개변수의 값을 변경할 수 없음\-> 메서드 호출 시점에 넘겨진 값이 끝까지 고정됨💡 static final , final 공통점 : 둘
기본형 : int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입 참조형 : 객체 또는 배열과 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입 쉽게말해 기본형 변수에는 직접 사용할 수 있는 값이 들어
HTTP 메시지 = HTTP 헤더 + HTTP 바디 ✅ HTTP 헤더의 용도 HTTP 전송에 필요한 모든 부가정보가 담겨있음 EX) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보 등등 Content-Type : 표현 데이터의
✅ HTTP (HyperText Transfer Protocol)HTTP 메시지에는 모든 것을 전송\-> HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML(API) 등 거의 모든 형태의 데이터를 전송HTTP의 역사HTTP/0.9 (1991년) : G
✅ IP (인터넷 프로토콜) 역할 지정한 IP 주소에 데이터 전달 패킷 이라는 통신 단위로 데이터 전달 ✅ IP 프로토콜의 한계 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 ex) 친구가 이사갔는지 안갔는지 모른상태로 편지보내는 것 비신뢰성
배포 -> 애플리케이션을 사용자가 사용할 수 있는 상태로 만드는 것 ✅ 개발 사이클 내에서의 배포 개발 서버를 배포 한 후 (개발서버에 여러가지 테스트 진행) 위에서 문제가 없다면 이제 운영서버에 배포를 진행 ✅ 배포 자동 배포 : 실무에서 많이 사용함 ex) J
빈 스코프 : 빈이 존재할 수 있는 범위 스프링 빈은 기본적으로 -> 싱글톤 스코프 로 생성해 줌 ✅ 스프링의 스코프들 싱글톤 스코프 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 스코프 : 스프링 컨테이너는 프로토
총 4가지가 존재 Autowired 로 생성자 주입, setter주입, 필드 주입, 일반 메서드 주입 ✅ 생성자 주입 생성자 호출 시점에 딱 1번만 호출되는 것이 보장 불변, 필수 관계에서 사용 불변 : 어플리케이션 종료 전까지 변하면 안됨 💡 정리 setter
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료작업이 필요함 ✅ 스프링 빈의 라이프 사이클객체 생성 -> 의존관계 주입스프링 빈은
스프링 빈을 등록할 때 자바코드의 @Bean 이나 XML의 `` 으로 직접 스프링 빈을 등록하였다 하지만 이러한 것들이 쌓이면 귀찮고, 누락 시키는 경우가 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 이라는 기능을 제
✅ 스프링 없는 순수한 DI 컨테이너 테스트 위 코드는 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다 -> 메모리 낭비가 심하다. 해결방안은
ApplicationContext 로 인터페이스 이다XML 기반 또는 애노테이션 기반의 자바 설정 클래스로 만들 수 있다스프링 컨테이너 생성스프링 빈 등록빈 이름을 직접 부여할 수 있지만, 항상 다른 이름을 부여하자!@Bean(name="memberService2)스프
✅ 할인 정책 변경기존에 사용하고 있던 FixDiscountPolicy 인터페이스가 아닌 RateDiscountPolicy 로 바꾸려고 함고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률 % 할인으로 변경해보자. 예를 들어서 기존 정책은 VIP가 10
메모리 회원 저장소 : 로컬에서 킬때 확인하는 용도 (서버 껐다키면 사라짐) DB 회원 저장소 : 직접 데이터를 넣어서 회원 저장하는 용도 회원 서비스 : MemberServiceImpl 회원 저장소 : 두가지의 구현체로 나누어짐 (MemoryMemberReposit