728x90
반응형
의존성(Dependency)이란?
A 클래스에서 b함수를 호출하기 위해서 B함수가 필요할 때, 'A클래스는 B클래스의 의존성을 가진다' 고 한다.
스프링 빈을 등록하고 의존성 주입을 할 때
@Autowired를 쓰면 의존성 주입이 편하다.
이렇게 config 파일에서 빈을 등록해주고,
컨트롤러에서 의존성 주입을 해주려는데
밑줄이 뜨면서 사용을 추천하지 않는다고 떴다.
@Autowired의 장점은 매우 편리하다는 것.
단점은
-의존성 불분명성: @Autowired를 사용하면 코드가 어디서든 해당 빈을 주입할 수 있으므로 어떤 클래스가 어떤 빈을 주입하는지 명확히 파악하기 어려움
-코드의 복잡성 증가
등이 있다.
대신 사용할 수 있는 방법으로는
-생성자 주입(Constructor Injection)
-Setter 주입(Setter Injection)
등이 있는데(getter,setter...)
개인적으로 제일 편한 건 @RequiredArgsConstructor 어노테이션이었다.
- @RequiredArgsConstructor 이란?
=> Lombok에서 제공하는 애노테이션으로, 클래스의 필드에 대한 생성자를 생성해준다. 이 어노테이션을 사용하면 final로 선언된 필드에 대한 생성자를 자동으로 생성할 수 있다. 객체를 초기화하는 코드를 작성할 필요 없이 필드를 선언하면 자동으로 생성자가 생성됨.
예시를 들어보자.
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class MyClass {
private final String name;
private final int age;
}
이렇게 어노테이션이 클래스에 적용이 되면,
public MyClass(String name, int age) {
this.name = name;
this.age = age;
}
이 코드가 자동으로 생성된다는 것이다.
참고로 생성자가 생성되려면 필드가 final 속성이어야 함을 잊지 말자.
반응형
'Backend-dev > Spring' 카테고리의 다른 글
[Spring] 스프링 빌드 오류 모음 || sudo: ./gradlew: command not found 에러가 뜰 때 (0) | 2024.02.21 |
---|---|
[Spring] 첫 실행시 로그인 화면이 뜨는 경우? / Please sign in (0) | 2024.02.05 |
[Spring] Firebase 초기 설정 / 스프링 프로젝트에 admin SDK 추가하기 (0) | 2024.02.04 |