본문 바로가기

Java9

섹션 6-5 [자동 구성 기반 애플리케이션] 동적인 자동 구성 정보 등록 동적인 자동 구성 정보 등록package com.tobyspring.config; import com.tobyspring.config.autoconfig.DispatcherServletConfig; import com.tobyspring.config.autoconfig.TomcatWebserverConfig; import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target.. 2024. 6. 15.
섹션 4-9 [독립 실행형 스프링 애플리케이션] @Conponent 스캔 @Component스캔지난 시간까지 사용했던 스프링 컨테이너에 빈을 등록하는 방법은 클래스 정보를 레지스터 빈 메소드에 넘겨주거나 아니면 팩토리 메소드를 만들어서 직접 빈 인스턴스를 생성하는 방법을 사용했습니다. 그러나 그것보다 좀 더 간결하게 빈을 등록할 수 있는 방법이 있습니다. 그 방법은 @Component, @ComponentScan 애노테이션을 사용하여 Spring Container에게 Bean구성정보를 전달하는 방식입니다.애노테이션 방식으로 Bean을 등록하면 좋은점은 새로운 Bean을 만들어서 추가할때 매번 구성정보를 다시 등록해줄 필요가 없고 간단하게 Component애노테이션을 사용하면 됩니다. 다만 이러한 편리성 이면에는 Bean으로 등록되는 클래스가 굉장히 많아지게 되면 내가 이 애플.. 2024. 6. 1.
섹션 4-8 [독립 실행형 스프링 애플리케이션] 자바코드 구성 정보 사용 자바 코드 구성 정보 사용Spring Container가 사용하는 구성정보를 우리가 만든 코드를 어떻게 오브젝트로 만들어서 Container내에 컴포넌트를 등록해 두고 Spring Container안에 들어있는 우리가  Bean이라고 불리는 오브젝트가 또 다른 오브젝트를 사용한다면 즉 이제 의존하고 있다면 이 관계를 어떻게 맺어줄 것인가 어느 시점에 그 오브젝트를 주입해 줄 것인가 이런 정보들을 Spring Container에다가 구성 정보로 제공을 해줘야합니다. 이러한 구성정보를 제공하는 방법이 여러가지가 있을 수 있지만 예전에는 외부 설정파일을 이용했었지만 요즘은 좀더 쉽고 간결한 여러가지 방법들이 나와있습니다. 그 중 독특한 방법은 Factory Method를 이용하는겁니다. Factory Meth.. 2024. 6. 1.
섹션 4-3 [독립 실행형 스프링 애플리케이션] 의존성 역전 의존성 역전 Dependency Injection ( Spring IoC / DI Container )의존관계란 무엇인가? HelloController는 SimpleHelloService 클래스가 변경되면 영향을 받습니다. 기능이 변경된다던지 메소드가 변경된다던지 할 경우 또는 다른 종류의 클래스 변경되면 HelloController는 영향을 받습니다. 런타임시에 동작하는 기능상에 영향을 주기도 하고 어떤 경우는 소스코드를 고쳐야지만 컴파일되고 동작할 수 있는 정도의 수준의 영향을 받기도 합니다.HelloController가 뭔가 다른 클래스 다른 오브젝트 기능을 사용하게 되면 헬로 컨트롤러는 그 클래스에 의존하고 있다. 이야기할 수 있습니다. 다만 의존관계의 문제점은 HelloController는 Si.. 2024. 6. 1.
섹션 4-1 [독립 실행형 스프링 애플리케이션] 스프링 컨테이너 사용 스프링 컨테이너 사용지난 시간에는 프론트 컨트롤러에 HelloController라는 오브젝트를 하나 만든다음 HelloController를 사용하는 방식으로 구현을 했는데  이제는 스프링 컨테이너 안에서 관리될 수 있도록 HelloController를 구현해보도록 하겠습니다. 스프링 컨테이너는 크게 두가지를 필요로 하는데 비즈니스 오브젝트 포조 라고 하는 자바 오브젝트를 가 필요합니다. 또한 포조 자바 객체를 만든 코드를 어떤식으로 구성할지에 대한 정보를 담고있는 Configuration Metadata를 필요로 합니다. package com.tobyspring.tobyspringboot; import java.io.IOException; import javax.servlet.ServletCo.. 2024. 6. 1.
섹션 3-7 [독립 실행형 서블릿 애플리케이션] Hello 컨트롤러 맵핑과 바인딩 Hello 컨트롤러 매핑과 바인딩맵핑은 웹 요청에 들어있는 정보를 활용해서 어떤 로직을 수행하는 코드를 호출할 것인가 결정하는 작업이다. /hello 요청이 들어오면 helloController에 hello메소드를 호출해서 로직을 수행하고 그 결과를 리턴하게 한다.바인딩은 헬로 컨트롤러는 웹 요청이나 웹 응답을 직접 노출하는 기술적인 타입을 사용하지 않았습니다. 컨트롤러를 구현한다 하더라도 직접적으로 웹 요청과 응답을 다루는 오브젝트를 사용하지 않습니다. 따라서 파라미터로 넘어온 name값을 String  타입으로 hello 메소드를 호출할 때 인자값으로 넘겨주는 작업을 바인딩이라고 합니다. form을 통해서 굉장히 많은 정보들이 넘어왔을때 dto등을 java bean 형태의 오브젝트를 만들어서 그 안에.. 2024. 5. 30.