Spring (22) 썸네일형 리스트형 [Spring] 다양한 의존 관계 주입 방법 다양한 의존 관계 주입 방법 다양한 의존관계 주입 방법에 대해 예제 코드와 함께 공부해 보도록 하겠습니다. 의존 관계 주입에는 4 가지 방법이 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자에 @Autowired를 하면 스프링 컨테이너에 @Component로 등록된 빈에서 생성자에 필요한 빈들을 주입합니다. 특징 생성자 호출 시점에 1번만 호출되는 것이 보장됩니다. 불변과 필수 의존 관계에서 사용됩니다. 사용자가 1개만 존재하는 경우에는 @Autowired를 생략해도 자동 주입 됩니다. NullPointerException을 방지할 수 있습니다. 주입받을 필드를 final로 선언 가능합니다. @Component public class SnackSer.. [Spring] 컴포넌트 스캔(Component Scan) 준비 이전에 작성된 글인 싱글톤(Singleton)의 코드가 있어야 본 글의 코드 예제를 수행할 수 있습니다. 컴포넌트 스캔(Component Scan)이란? 지금까지 스프링 빈을 등록할 때 @Bean을 사용하였습니다. 이는 관리할 빈이 많아진다면 관리하기 버거운 사태가 생기게 됩니다. 스프링은 굳이 빈 설정파일을 만들지 않거나, @Bean을 쓰지 않고도 빈을 등록하는 컴포넌트 스캔(Component Scan)이라는 기능을 제공합니다. @ComponentScan을 사용하여 @Component가 붙은 모든 클래스를 스프링 빈으로 등록할 수 있습니다. 의존관계도 자동으로 주입하는 @Autowired 기능도 제공합니다. sample_Project 패키지에 AutoDependencyConfig.java 클래스를.. [Spring] 싱글톤(Singleton) 준비 이전 게시물인 [Spring] 간단한 서비스 생성 및 테스트에서 작성된 코드가 있어야 본 글의 코드 예제을 수행할 수 있습니다. 스프링 없는 컨테이너만 사용한 객체 생성 방법 sample_Project패키지에 singletonTest.java 클래스를 생성합니다. package developingman.sample_Project; import developingman.sample_Project.member.MemberService; public class SingletonTest { static DependencyConfig dependencyConfig = new DependencyConfig(); static MemberService memberService1 = dependencyConfig... [Spring] 빈 스코프(Bean Scope) 빈 스코프(Bean Scope)란? 먼저 빈(Bean)은 스프링 컨테이너에서 관리하는 자바 객체입니다. 그리고 스코프(Scope)는 존재할 수 범위를 말합니다. 즉, 빈 스코프는 스프링 빈이 존재할 수 있는 범위를 뜻합니다. 빈 스코프를 어떻게 설정하느냐에 따라 스프링 빈의 생성과 소멸을 클라이언트에서 관리해줘야 하는 경우도 생길 수 있고, 다양한 요구사항에 맞는 스코프를 지정해 사용할 수 있습니다. Scope Description singleton (Default) 각 스프링 컨테이너에 대한 단일 객체 인스턴스에 대한 단일 bean definition의 범위를 지정합니다 prototype 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프입니다. request 웹 요청.. [Spring] 빈(Bean) 빈(Bean)이란? 빈(Bean)은 스프링 컨테이너가 관리되는 재사용 소프트웨어 컴포넌트입니다. 빈은 인스턴스화된 객체를 의미합니다. 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 합니다. @Bean이 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록합니다. 빈은 클래스 등록정보, getter/setter 메서드를 포함합니다. 빈은 컨테이너에 사용되는 설정 메타데이터로 생성됩니다. 설정 메타 데이터 XML 또는 자바 애너테이션, 자바 코드로 표현합니다. 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체를 정의합니다. 빈 접근 방법 ApplicationContext를 사용하여 빈 정의를 읽고 액세스 할 수 있습니다. ApplicationContext context = new ClassPa.. [Spring] 스프링 컨테이너(Spring Container) 스프링 컨테이너(Spring Container) 스프링 컨테이너(Spring Container)란 스프링 프레임워크의 핵심 컴포넌트입니다. 스프링 컨테이너는 내부에 존재하는 애플리케이션 bean의 생명주기를 관리합니다. Bean의 생성, 관리, 제거 등의 역할을 담당합니다. ApplicationContext를 스프링 컨테이너라고 하고 인터페이스로 구현되어 있습니다. 스프링 컨테이너는 XML, 애너테이션 기반의 자바 설정 클래스로 만들 수 있습니다. Spring Boot 이전엔 개발자가 xml을 통해 모두 설정하여 주었지만, Spring Boot 이후 거의 사용하지 않게 되었습니다. 빈의 인스턴스화, 구성, 전체 생명 주기 및 제거까지 처리합니다. 컨테이너는 개발자가 정의한 Bean을 객체로 만들어 관리하.. [Spring] DI(Dependency Injection)란? DI(Dependency Injection)란? DI는 의존성 주입으로써 스프링 원칙 중 하나인 IoC(Inversion of Control)를 구현하기 위해 사용되는 방법 중 하나입니다. 앞서 작성한 간단한 서비스 생성 및 테스트 글에서 작성한 예제 코드를 살펴보도록 하겠습니다. 위 작성된 코드는 MemberRepository 객체에 의존성을 가지고 있습니다. 클래스에 구현된 세 메서드는 전부 MemberRepository 클래스로 구현한 객체를 통해 메서드를 사용하고 있습니다. 이러한 상황에서 MemberRepository라는 객체를 다른 MockRepository라는 객체로 교체해야 한다면 어떻게 해야 할까요? private final MemberRepository memberRepository =.. [Spring] 간단한 서비스 생성 및 테스트 준비 이전 게시물인 스프링 환경 구성을 참고하여 준비를 마칩니다. 예제 코드 회원 간단한 회원 가입 및 조희, 삭제기능이 있고 회원 관련 저장소는 언제든지 원하는 객체를 주입시킬 수 있어야 합니다. 아래의 사진과 같이 sample_Project에 member 패키지를 생성합니다. member 패키지에 Member.java 클래스를 생성합니다. package developingman.sample_Project.member; public class Member { private Long memberId; private String email; private String name; private String phone; //생성자 public Member(Long memberId, String email, S.. 이전 1 2 3 다음