[내배캠/27일차] TIL - 숙련 Spring 시작

euphony·2025년 2월 4일
0

내일배움캠프

목록 보기
42/66

✅오늘의 한 일

  • Spring 입문 과제 제출
  • 숙련 Spring 1-1 ~ 1-6
  • 자바 중급 2편 섹션 11 완료

💻오늘의 학습

숙련 Spring 1주차

SOLID 원칙

객체 지향의 핵심은 다형성!

  • 단일 책임 원칙 SRP(Single Responsibility Principle) : 하나의 클래스는 하나의 책임만 가져야 한다.
  • 개방 폐쇄 원칙 OCP(Open Closed Principle) : 새로운 기능을 추가할 때 기존 코드를 수정하지 않고, 확장할 수 있도록 설계해야 한다.
  • 리스코프 치환 원칙 LSP(Liskov Substitution Principle) : 자식 클래스는 항상 부모 클래스를 대체할 수 있어야 한다.
  • 인터페이스 분리 원칙 ISP(Interface Segregation Principle) : 하나의 큰 인터페이스보다는 여러 개의 작은 인터페이스로 분리해야 한다.
  • 의존관계 역전 원칙 DIP(Dependency Inversion Principle) : 구체적인 클래스에 의존하지 말고, 인터페이스나 추상 클래스에 의존하도록 설계해야 한다.

Spring Container

  • Spring Container : Spring이 객체를 관리하는 공간. 객체(Bean)의 생성 및 관리와 의존성을 주입하는 등의 역할을 한다.

Java에서 new 키워드를 이용해 직접 객체를 생성했다면, Spring에서는 Spring Container에게 "어떤 객체를 사용하고 싶어!"라고 말하면 그 객체를 생성해 전달해준다고 보면 된다.

Spring Container는 여러 종류가 있는데, 대표적으로 아래 두 가지가 많이 사용된다.

  • BeanFactory : Spring Container의 최상위 인터페이스. 가장 기본적인 Container로 필요할 때만 객체를 생성한다.
  • ApplicationContext : 가장 많이 사용된다. BeanFactory의 확장된 형태(implements)로, DI(의존성 주입) + AOP(관점 지향 프로그래밍) + 이벤트 리스너를 지원한다.

DI, AOP, 이벤트 리스너 등의 내용은 아직 배우지 않았으니, 일단은 이러한 역할을 한다는 것과 ApplicationContext가 가장 많이 사용되는 Container라고 기억해두자!

Spring Bean

  • Spring Bean : Spring Container가 생성하고 관리하는 Java 객체.

Spring Bean을 등록하는 방법에는 다음과 같이 3가지가 있다. 각각의 설명과 가장 많이 쓰이는 방법에 대해 찾아보았다.

  • XML : 지금은 거의 사용되지않는 방식. applicationContext.xml에서 모든 Bean을 일일이 설정해야 해서 가독성이 떨어지고 유지보수가 어렵다.
  • Annotation : 요즘 많이 사용하는 방식. @ComponentScan으로 특정 패키지를 스캔해서 @Component가 붙은 클래스를 자동으로 찾아서 등록한다. 간단하고 유지보수가 편하다.
    • @Component : 자동으로 Bean 등록
    • @Autowired : 자동으로 의존성 주입
  • Java 설정파일 : 대규모 프로젝트에서 많이 사용되는 방식. Annotation 방식보다 더 유연한 설정이 가능하다. @Configuration@Bean을 사용해서 Bean을 등록한다.

IOC/DI

  • IOC(제어의 역전, Inversion Of Control)
    : 개발자가 아닌 Spring Container가 객체의 생성 및 관리를 담당하는 것.

  • DI(의존성 주입, Dependency Injection)
    : IOC를 구현하는 방식 중 하나로, Spring이 객체 간의 의존성을 주입해주는 것.

📝오늘의 회고

오늘은 과제 제출 + 과제 해설을 듣느라 하루를 다 쓴 것 같다...! 이제 목요일에 있을 숙련주차 과제를 위해 숙련 Spring 강의를 빠르게 들어야 한다. 입문 과제를 천천히 리뷰해보고 싶은데 모든게 빠르게 지나가서 마음의 여유가 없다.🤯 베이직/스탠다드 반 강의도 보려고 하는데 생각보다 쉽지않다. 내가 했던 걸 잊어버리기 전에 얼른 리뷰해보고 싶다.

📌내일의 할 일

  • 숙련 Spring 1주차 완료
  • 자바 중급 2편 섹션 10 ~ 11 정리

0개의 댓글

관련 채용 정보