javaboiii의 Spring

Spring - 개념 복습 / 어노테이션

javaboiii 2024. 10. 4. 11:57

Spring

[복습]

스프링 프레임워크는 IoC(Inversion of Control)와 AOP(Aspect-Oriented Programming)를

지원하는 경량의 프레임워크

개발자가 객체를 직접 생성하고 관리하는 대신, 스프링 컨테이너가 이 모든 과정을 자동으로 처리함

설정 파일

pom.xml -  라이브러리 설정 파일로, 의존성을 관리

applicationContext.xml: -  스프링 컨테이너 설정 파일로, 애플리케이션의 객체를 정의하고 관리

web.xml -서블릿 컨테이너(예: 톰캣) 설정 파일로, 서블릿의 매핑 및 초기 설정

스프링 컨테이너

정의  -  개발자가 직접 객체를 생성(new)하고 관리하는 대신, 스프링 컨테이너가 대신 수행

예시 -  서블릿 컨테이너(톰캣)는 new FC();와 fc.doGet();, fc.doPost();를 처리

IoC와 DI

IoC (제어의 역행)

  • 스프링 컨테이너가 객체의 생성과 생명주기를 관리

DI (의존 주입)

  • 의존성: 어떤 메서드를 수행할 때 필요한 객체를 외부에서 주입받는 방식
    ex) Controller가 DAO에 의존성을 가짐
  • 주입 방식
    • Setter 주입: <property> 태그를 사용하여 setter 메서드로 의존성을 주입
    • 생성자 주입: <constructor> 태그를 사용하여 생성자를 통해 의존성을 주입
    • 어노테이션 주입: @Autowired를 사용하여 타입에 맞는 객체를 자동으로 주입

어노테이션

@Component: 클래스를 스프링의 Bean으로 등록
== IPhone apple = new IPhone();
== <bean class="IPhone" id="apple" >

컴포넌트 == Bean == 모듈 == 패키지 == 위젯
== 리팩토링 결과물
== 함수화 == 메서드화


@Autowired: 해당 타입의 Bean을 자동으로 주입
이 경우, 멤버 변수마다 하나의 어노테이션을 달아야 함

 

@Qualifier: DI 모호성 문제를 해결하기 위해 특정 Bean의 이름을 지정하여 주입

 

컴포넌트 == new

의존성 주입 == @Autowired

객체명 참고 == @Qualifier 

XML 보다 어노테이션

XML 설정은 복잡해지기 쉽고, 많은 설정이 필요해 불편함이 발생할 수 있음

@Component와 @Autowired와 같은 어노테이션을 사용하는 방식이 더 간편하고 직관적

 

스프링 프레임워크는 IoC와 DI를 통해 개발자의 부담을 덜어주며, 효율적인 객체 관리와 의존성 관리를 가능하게 함