@Inject는 Java의 표준 의존성 주입(Dependency Injection) 어노테이션.
이 어노테이션은 주로 클래스나 메소드, 필드에 사용되며, 해당 요소에 의존성을 주입할 때 사용됨.
예를 들어, 특정 클래스에서 다른 클래스의 메서드나 필드를 사용하고 싶을 때, 직접 인스턴스를 생성해서 사용하는 대신에 @Inject 어노테이션을 사용하여 필요한 객체를 주입받아 사용할 수 있음.
Spring 프레임워크에서는 @Autowire 자체 의존성 주입 어노테이션이 있지만, @Inject 는 JSR-330(javax.inject.Inject)라는 Java의 표준 스펙에 정의된 어노테이션이므로, Spring을 사용하지 않는 환경에서도 동일하게 동작함.
ex.
public class MyService {
private final MyRepository myRepository;
@Inject
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
// ...
}
위의 예제에서 MyService 클래스는
MyRepository에 대한 의존성을 가지고 있음.
@Inject 어노테이션을 생성자에 붙여서,
MyService 인스턴스 생성 시
MyRepository 인스턴스를 주입받도록 함.
이렇게 하면 MyService 내부에서 MyRepository의
메서드를 자유롭게 사용할 수 있음.