JAVA 28

빈 스코프

프로토타입 스코프싱글톤 스코프의 빈을 조회하면 스프링 컨테이너는 항상 같은 인스턴스의 스프링빈을 반환한다. 반면에 프로토타입 스코프 스프링 컨테이너에서 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환한다.프로토타입 스코프의 빈을 스프링 컨테이너에 요청한다스프링 컨테이너는 이 시점에 프로토타입 빈을 생성하고, 필요한 의존관계를 주입한다.스프링 컨테이너는 생성한 프로토타입 빈을 클라이언트에 반환한다.이후에 스프링 컨테이너에 같은 요청이 오면 항상 새로운 프로토 타입 빈을 생성하서 반환한다. 정리여기서 핵심은 스프링 컨테이어는 프로토타입 빈을 생성하고, 의존관계주입, 초기화 까지만 처리한다는 것이다. 클라이언트에 빈을 반환하고, 이후 스프링 컨테이너는 생성된 프로토타입 빈을 관리하지 않는다. ..

JAVA 2024.04.28

Server 란?

클라이언트-서버 구조 게시글 작성과 게시글 검색을 예시로 클라이언트의 요청과 서버의 응답을 살펴보자클라이언트가 서버에 저장해야 할 게시글 내용을 리퀘스트에 담아 서버에 전달한다서버는 해당 내용을 정상적으로 저장했는지 혹은 저장 과정에서 에러가 발생했는지 리스폰스에 담아 보낸다.클라이언트가 검색하고자 하는 내용을  리퀘스트에 담아 서버에 전송한다.서버는 내용에 해당하는 데이터를 리스폰스오 담아 보낸다. JSONJSON 은 Javascript에서 사용하는 Object 라는 자효형과 같은 형태로 사용하는 data format 을 의미한다. JSON 형식1. NAME - VALUE 형식의 쌍{ "name" : "value"}2. 배열과 중첩객체 구조를 지원한다{ "members": [ { "id..

JAVA 2024.04.26

특정 타입의 스프링 빈이 모두 필요할 때

예를 들어서 할인 서비스를 제공하는데, 클라이언트가 할인의 종류(rate, fix)를 선택할 수 있다고 가정해보자. 스프링을 사용하면 소위 말하는 전략 패턴을 매우 간단하게 구현할 수 있다. 아래 코드를 보자 package hello.core.autowired;import hello.core.AutoAppConfig;import hello.core.discount.DiscountPolicy;import hello.core.member.Grade;import hello.core.member.Member;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.a..

JAVA 2024.04.26

@Qulifier, @Primary

@Qualifier @Qualifier 는 추가 구분자를 붙여주는 방법이다. 주입시 추가적인 방법을 제공하는 것이지 빈 이름을 변경하는 것 은 아니다  빈 등록시 @Qualifier를 붙여 준다.@Component@Qualifier("mainDiscountPolicy")public class RateDiscountPolicy implements DiscountPolicy {} @Component@Qualifier("fixDiscountPolicy")public class FixDiscountPolicy implements DiscountPolicy {} 주입시에 @Qualifier를 붙여주고 등록한 이름을 적어준다.@Autowiredpublic OrderServiceImpl( MemberRepositor..

JAVA 2024.04.26

컴포넌트 스캔

AutoAppConfig.java package hello.core;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import static org.springframework.context.annotation.ComponentScan.*;@Configuration@ComponentScanpublic class AutoAppConfig {}컴포넌트 스캔을 사용하려먼 먼저 @ComponentScan 을 설정 정보에 붙여주면 된다.컴포넌트 스캔..

JAVA 2024.04.25

싱글톤 컨테이너

스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글톤(1개만 생성)으로 관리한다.   @Configuration 과 싱글톤1. @Bean 이 붙은 메서드마다 빈을 생성 2. @Configuration을 적용해줘야만 싱글톤을  보장한다  @Configuration 을 안붙이면?1. Appconfig가 class hello.core.AppConfig$$SpringCGLIBXXXXX 가 아닌 class hello.core.AppConfig 빈으로 컨테이너에 등록2. 싱글톤을 보장하지 않는다. Appconfig.java@Configurationpublic class AppConfig { @Bean public MemberService member..

JAVA 2024.04.24

Java에 대해서..

Java에 대해서 코딩하기 전에 Java라는 언어는 어떻게 작동하는지 이론적인 내용을 살펴보자..Java는 JVM(자바 가상 머신) 위에서 작동합니다. JVM을 간단히 말하자면, 자바를 운영체제에 구애받지 않고 굴러가게 해주는 가상 머신이다. 1. 코딩: 위 그림처럼 내가 작성한 코드는 *.java로 저장이 된다. 2. 해석: 이 파일은 자바 컴파일러가 바이트코드파일(.class)로 컴파일 된다. 3. 준비: 이렇게 컴파일된 .class 파일을 Class Loader를 통해 JVM 에 올라간다. 4. 해석: JVM에 있는 .class 파일들을 실행 엔진의 인터프리터와 JIT(Just in time) 컴파일러를 통해 해석된다.  한 번 더 해석 된다고 생각하면 된다. 5. 실행: 해석..

JAVA 2024.04.24