전체 글
[Spring] 스프링 부트에서 Chat GPT API 사용해보기
OPEN AI에서 지원하는 Chat GPT의 API를 사용해서 프롬프트에 대해 응답을 받는 경험을 공유하고자 쓰는 글입니다. 준비 사항 저는 아래의 라이브러리를 사용했습니다. https://github.com/TheoKanning/openai-java GitHub - TheoKanning/openai-java: OpenAI GPT-3 Api Client in Java OpenAI GPT-3 Api Client in Java. Contribute to TheoKanning/openai-java development by creating an account on GitHub. github.com 그리고, 프로젝트에서는 gradle을 사용하기 때문에 아래 의존성을 추가해줍니다. implementation '..
[Spring] IoC와 DI (2/2)
DI 구현 방법 필드 주입 @Service public class BurgerService { @Autowired private BurgerRecipe burgerRecipe; } 변수 선언부에 @Autowired 어노테이션을 붙인다. 장점 사용하기 편하다 단점 단일 책임 원칙 위반의 가능성이 있다. @Autowired 선언만 하면 되므로 의존성을 주입하기 쉽다. 따라서, 하나의 클래스가 많은 책임을 갖게 될 가능성이 높다. 의존성이 숨는다. 생성자 주입에 비해 의존 관계를 한 눈에 파악하기 어렵다. DI 컨테이너와의 결합도가 커지고, 테스트하기 어렵다. 불변성을 보장할 수 없다. 순환 참조가 발생할 수 있다. 수정자 주입 @Service public class BurgerService { private..
[Spring] IoC와 DI (1/2)
Inversion of Control 제어의 역전이라고 한다. 스프링 애플리케이션에서 스프링 빈의 생성과 의존관계 설정, 사용 및 제거 등의 작업을 애플리케이션 코드가 아닌 스프링 컨테이너가 담당한다. 이를 스프링 컨테이너가 코드 대신 빈에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 스프링 컨테이너를 IoC 컨테이너라고 부르기도 한다. IoC 컨테이너 스프링에서 IoC를 담당하는 컨테이너를 빈 팩토리, DI 컨테이너, Application Context라고 부른다. 빈(오브젝트)의 생성과 빈 사이의 런타임 관계를 설정하는 DI의 관점에서 컨테이너를 빈 팩토리 또는 DI 컨테이너라고 부른다. 그러나 스프링 컨테이너는 단순히 DI작업보다 더 많은 작업을 하는데, DI를 위한 빈 팩토리에 여러가지 기..