Review 2022. 11. 1. 20:36

백기선 스프링 프레임워크 입문 강의 수강 후기

  • 스프링의 철학을 맛볼 수 있었다.
  • 스프링에 익숙해지기 좋은 예시인 Petclinic(https://github.com/spring-projects/spring-petclinic) 프로젝트를 알게 되어 좋았다.
  • 18백기선의 매력을 알 수 있었다.. 불꽃놀이를 보러가고 싶어하는 성격 확인…
    • 인프런 배속 기능 단축키는 < , > 이며, 스킵(방향키)보다는 배속 기능을 활용하는 게 내용을 놓치는 일 없이 마음대로 볼 수 있어서 좋다.

IoC (Inversion of Control)

  • 사용하는 메서드에서 객체 인스턴스를 생성하는 게 아니라, 누군가 알아서 생성하여 제공한다고 생각하고 사용하는 방식이다. (실제로 IoC 컨테이너가 제공)
  • 테스트 코드 작성에도 유리하다.

IoC 컨테이너

  • 대표적으로 ApplicationContext (BeanFactory)
  • 스프링 Bean을 생성하여 제공한다.

Bean

  • IoC 컨테이너가 관리하는 객체이다.
  • Component Scanning으로 자동 등록하는 방식과, 직접 XML이나 자바 설정파일에 등록하는 방법이 존재한다.
    • Component Scanning은 @ComponentScan 애노테이션을 통해 해당 애노테이션이 있는 디렉토리부터 하위 경로를 모두 스캔하여 @Component 애노테이션이 붙은 항목을 Bean으로 등록하는 방식이다.
      • @ComponentScan 애노테이션 매개변수를 통해 하위 디렉토리가 아닌 외부 경로의 Element도 Bean으로 등록할 수 있다고 하는데, 굳이 사용하지 않아도 될 것 같다.
    • XML이나 자바 설정파일에 등록하는 방법은 @Configuration 이 붙은 클래스에 Bean을 명시하는 방식인데, 사실 잘 안 쓸 것 같아 일단 잊었다.
  • 사용법
    • @Autowired , @Inject 애노테이션으로 사용할 수 있다.
      • 해당 애노테이션들은 생성자, 필드, Setter에 붙일 수 있다. Setter가 있다면 필드에 직접 붙이는 것 보다는 Setter에 붙이는 게 낫고, 없다면 굳이 Setter를 만들지 않고 필드에 붙이는 게 합리적일 것이라고 한다. 내 생각도 그렇다.
      • 이것이 DI다.
    • ApplicationContext.getBean(”빈이름”) 으로도 직접 꺼낼 수 있다.
      • IDE 추적을 위해 ApplicationContext.getBean(Something.class) 형식으로 클래스 명을 꺼내서 쓰는 듯..?

DI (Dependency Injection)

  • Bean을 필요한 곳에 넣어주는 것..
  • 장점 순위 : 생성자 주입 > Setter 주입 > 필드 주입

AOP (Aspect Oriented Programming)

  • 여러 메서드의 공통 부분 처리를 담당하는 코드를 모아서 중복을 없애고 관리를 쉽게 한다.
  • 직접 구현하려면 @Aspect , @Around 애노테이션을 통해 특정 애노테이션이 붙은 Element에 대해 동작을 설정할 수 있다. (ProceedingJoinPoint 객체 사용.. 얘도 DI로 받아옴)

PSA (Portable Service Abstraction)

  • PSA라는 잘 만든 인터페이스를 기반으로 코드를 작성하면, 이 인터페이스를 구체화한 기술이 변경되어도 내 코드는 그대로 사용할 수 있다.
  • 예를 들어 스프링 트랜잭션, 스프링 캐시, 스프링 웹 MVC 등에서 PSA에 해당하는 애노테이션(@Transactional, @Cacheable, @Controller 등)을 사용하면, 데이터 소스나 캐시 구현체, 서블릿이나 Reactive 등의 구현 기술이 변경되어도 내 코드를 그대로 사용할 수 있다.

'Review'에 해당되는 글 1건