스프링 개념 잡기

@Service 어노테이션 @Component 어노테이션

@Service 어노테이션은 @Component 어노테이션을 가지고 있음

-> 스프링이 자동으로 객체를 만들고 실행하는 흐름을 가져간다.

     필요한 것을 알아서 생성해서 코드의 실행을 Spring Framework가 제어하고 흐름을 제어한다 == 제어의 역전(Ioc)

 

정리

  1. 스프링이 코드의 실행 제어권을 갖는다
  2. 서버에 실행에 필요한 객체 선언 -> 스프링이 해당 객체의 인스턴스를 생성 후 사용
  3. 특정 객체가 특정 기능을 구현하는데 꼭 필요한 다른 객체가 있는 경우 -> @Component 어노테이션 사용 

 

@Autowired 어노테이션

다른 객체 생성에 또 다른 객체가 필요한 경우 해당 객체에 @Autowired를 붙인다.

  1. @Autowired를 필드에 직접 주입하면 스프링이 생성해서 넣어줌 (위험)
  2. @Autowired를 setter에 붙여서 스프링이 생성해서 넣어줌 (얘도 위험)
  3. @Autowired를 생성자에 붙여서 스프링이 생성해서 넣어줌

특이 케이스가 아닌경우 생성자 주입을 사용한다.

생성자 주입은 final 필드 값을 넣어주는 생성자를 생성하고 @Autowired를 입력하면 된다.

생성자 주입 시, @Autowired는 생략이 가능하다.

 

롬복 사용시, 필수값들이 다 들어가는 생성자를 자동으로 만들어주는 @RequiredArgsConstructor 를 쓰면 생성자 구현을 안해도 된다.

선언만 하면 알아서 만들어 준다.

 

결론

스프링이 대부분의 필수적으로 들어가는 귀찮은 작업들을 해주므로 개발자는 신경을 덜 써도 된다.

지금 다 이해하지 않더라도 왜 좋은지는 알고 가면 된다. 나중에 깊게 알아보고 지금은 기능 구현에 집중하기. 

 

 

 

+ Recent posts