[포스코x코딩온] KDT-Web-8 18주차 spring boot

Yunes·2023년 10월 30일
0

[포스코x코딩온]

목록 보기
39/47
post-thumbnail

IoC

Inversion of Control 제어 반전

객체의 생성 소멸을 Spring Container 가 대신하는 것

Bean Factory

IoC 의 기본 형태, 메모리 관리

Spring Container

의존관계 주입 Dependency Injection DI 를 이용하여 애플리케이션을 구성하는 여러 빈 Bean 들의 생명주기와 애플리케이션의 서비스 실행 등을 관리하며 생성된 인스턴스들에게 기능을 제공하는 것을 말한다.

Bean

스프링이 제어권을 가져서 직접 생성하고 의존관계를 부여하는 오브젝트
Spring IoC 컨테이너가 관리하는 Java 객체
Spring 에서는 new 를 이용해 만들어진 객체가 아니라 Spring 에서 관리하는 Bean 이라는 객체를 이용한다.
개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean 으로 등록할 수 있다.

장점

  • 의존성 관리가 용이하다.
  • 똑같은 객체가 여러 번 만들어지는 것이 아니라 하나를 만들면 재사용한다. => 메모리 절약

Bean 등록방법

  • @Component : 가장 쉬운 방법으로 클래스 선언부 위에 @Component 를 사용한다. 개발자가 직접 작성한 class 를 Bean 으로 등록하기 위한 어노테이션
  • @Bean : 메소드의 경우 사용하는 어노테이션

@Bean 으로 등록된 메소드를 의존성 주입받아 사용하려면 @Autowired 를 사용한다. @Autowired 는 스프링 컨테이너에 등록한 Bean 에게 의존 관계 주입이 필요시 DI 를 도와준다. 즉, @Autowired 를 사용한 클래스에서 적용된 클래스를 사용할 수 있게 해준다.

@Configuration : 빈 정의를 포함하는 클래스임을 나타낸다.

AnnotationConfigApplicationContext : 자바 설정에서 정보를 읽어와 빈 객체를 생성하고 관리한다. HellowWorldConfiguration 에 정의한 @Bean 설정 정보를 읽어와 객체를 생성하고 초기화한다.

getBean() 메서드는 AnnotationConfigApplicationContext 가 생성한 빈 객체를 검색할 때 사용된다. 이때 getBean() 메서드는 name 메서드가 생성한 객체를 리턴한다.

Bean 에 name 을 전달하면 getBean 에서 다른 이름으로 빈을 가져올 수 있다.

인자를 전달할 시 같은 파일에서의 다른 Bean 메서드를 가져다 사용한다. getBean() 호출할때 같이 넘기는게 아니다.

만약 하나만 해당 클래스를 하나만 사용한다면 getBean 에 Information.class 처럼 사용할 수 있다. 혹은 @Primary 를 붙이면 여러개여도 해당 어노테이션을 붙인 Bean 을 가져온다.

record

// getter, setter, 생성자 등을 자동으로 생성
record Person(String name, int age) {}

ApplicationContext

어플리케이션 제작에 필요한 기능을 제공한다.

DI

Dependency Injection 의존성 주입

DI 를 통해 IoC 를 이룬다.
재사용성을 높이고 결합도를 낮춘다.

Field Injection
Setter Injection
Constructor injection

AOP

Aspect Object Programming 관점 지향 프로그래밍
비즈니스 로직, 공통 모듈 구분

=> 객체별로 관리하는 게 아니라 관점별로 구분해서 제어한다.

POJO

Plain Old Java Object getter/setter 같은 기본적인 기능만 가진 Java Object

Spring Boot

Spring 을 더 쉽게 사용하기 위한 도구
Toncat, XML 설정 등의 세팅 작업들이 이미 이루어져서 Spring 을 더 쉽게 사용할 수 있다.

Annotation?

Annotation(@) 은 사전적인 의미로 주석을 나타낸다.
Java 에서의 @ 는 주석처럼 쓰이며 특별한 의미와 기능을 수행하게 해준다. 어노테이션은 프로그램에게 추가적인 정보를 제공해주는 메타데이터이다.

장점

  • 코드량 감소
  • 유지보수 용이
  • 생산성 증가
profile
미래의 나를 만들어나가는 한 개발자의 블로그입니다.

0개의 댓글