Backend 44

스프링 빈 등록과 조회

스프링 컨테이너에서 빈 조회 다음 메소드를 통해 스프링 컨테이너에 있는 빈을 조회할 수 있다. getBeanDefinitionNames(): 스프링에 등록된 모든 빈 이름을 조회한다. 따라서 사용자가 정의한 빈 외에 스프링이 내부에서 사용하는 빈들도 함께 조회된다. 스프링이 내부에서 사용하는 빈은 제외하고 사용자가 등록한 빈만 조회하려면, getRole() 메소드를 통해 빈을 구분하면 된다. ROLE_APPLICATION` : 일반적으로 사용자가 정의한 빈 ROLE_INFRASTRUCTURE` : 스프링이 내부에서 사용하는 빈 getBean(): 빈 이름 또는 타입으로 빈을 조회한다. (ex, getBean("memberService", MemberService.class)) 조회하려는 빈이 없으면 No..

Backend/Spring 2023.12.29

컴포넌트 스캔과 자동 의존관계 주입

컴포넌트 스캔(@ComponentScan, @Component)과 자동 의존관계 주입(@Autowired) 지금까지 스프링 빈을 등록할 때 @Bean을 포함한 설정 정보 클래스를 작성해주었다. 그러나 등록해야 할 빈이 수십, 수백개가 되면 일일히 등록하기 매우 번거롭다. 따라서 스프링은 자동으로 스프링 빈을 등록해주는 컴포넌트 스캔이라는 기능을 제공한다. 다음과 같이 설정 정보 클래스에 @ComponentScan을 붙여주면 된다. 그러면 기존과 달리 @Bean을 작성하며 일일히 빈을 등록해주던 코드를 작성해주지 않아도 된다. @Configuration @ComponentScan() public class AutoAppConfig { } 설정 정보 클래스임을 나타내기 위해 @Configuration을 붙여..

Backend/Spring 2023.12.29

스프링 컨테이너와 스프링 빈

스프링 컨테이너 스프링은 스프링 컨테이너를 제공함으로써 이전에 직접 만들었던 AppConfig처럼 각 객체들의 생성과 의존관계를 관리해준다. 스프링 컨테이너가 객체 간의 의존관계를 관리해줌으로써 각 구현체 클래스들은 다른 구현체 클래스에 의존하지 않을 수 있다. 이전에 정의했던 AppConfig에 스프링을 적용하면 다음과 같다. @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(membe..

Backend/Spring 2023.12.28

스프링과 객체지향

스프링의 핵심 컨셉: 객체지향 스프링은 자바 기반의 프레임워크이다. 자바의 가장 큰 특징은 객체지향 언어라는 것인데, 스프링은 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 즉 스프링의 핵심 컨셉은 객체지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 다형성 객체지향 프로그래밍은 프로그램을 여러 객체들의 모임으로 파악하고, 각 객체들 간에 메시지를 주고받으며 협력하는 것을 강조한다. 이러한 객체지향 프로그래밍은 프로그램을 유연하고 변경에 용이하게 만든다. 프로그램이 유연하고 변경에 용이하다는 것은 무엇일까? 여기서 다형성이라는 개념이 등장한다. 다형성은 역할과 구현을 분리한다. 예를 들어 다음과 같이 자동차 역할과 그 구현이 나눠져있다고 가정하자. 그러면 자동차의 구현체가 K3에..

Backend/Spring 2023.12.28