DEV/Java

@Component

Beomsu Koh 2023. 7. 10.

@Component

- Spring에서 해당 클래스의 인스턴스를 싱글톤 생성
- Spring Context 내에서 전역적으로 사용가능하게 한다

@Component 어노테이션은 Spring에서 해당 클래스의 인스턴스가 필요할 때 Spring이 직접 관리하도록 해줍니다
이렇게 하면 Spring IoC Container는 이 클래스의 라이프사이클을 관리하게 됩니다.

다시 말해, 이 클래스의 인스턴스를 언제 생성하고, 언제 소멸시킬지 등을 결정하게 됩니다.
또한, 이 클래스를 필요로 하는 다른 클래스에게 자동으로 제공할 수 있게 됩니다.

이것은 모듈 간의 의존성 관리(DI (Dependency Injection))를 더욱 편리하게 만들어줍니다.
필요한 객체를 직접 생성하거나 찾는 대신, 필요한 곳에 적절하게 주입되도록 할 수 있습니다.

사용 예제

다음은 @Component를 사용하여 클래스를 Spring 컨테이너가 관리하도록 하는 간단한 예제입니다.

@Component
public class ExampleComponent {
    //… class body
}

이렇게 하면, 이 클래스의 인스턴스는 애플리케이션 전체에서 사용 가능해집니다.

FakeStore 클래스에 @Component 사용하기

FakeStore 클래스는 더미 데이터를 생성하고 관리하는 클래스입니다.
@Component를 사용하여 이 클래스를 Spring Bean으로 등록하면, 이 클래스의 인스턴스는 애플리케이션 전체에서 사용 가능하게 됩니다.

  1. 먼저, 더미 데이터를 생성하는 메서드를 정의합니다.
private List<Product> productDummyList() {
    // Create an empty list to store product information.
    List<Product> productList = new ArrayList<>();
        
    // Create dummy data and add it to the list.
    productList.add(new Product(1L, "Product1", 10000, "description1"));
    productList.add(new Product(2L, "Product2", 20000, "description2"));
        
    // Returns a list with dummy data.
    return productList;
}
  1. 그 다음, 생성된 더미 데이터를 관리할 필드를 정의합니다.
private List<Product> productList = productDummyList();
  1. 이제, 이 클래스를 Spring Bean으로 등록하기 위해 @Component 어노테이션을 추가합니다.
@Component
public class FakeStore {
    private List<Product> productList = productDummyList();
    // … more code here
}

이제, 이 클래스는 Spring이 관리하는 클래스가 되었으며, 필요한 곳에서 이 클래스의 인스턴스를 주입받아 사용할 수 있게 되었습니다.
이를 통해, 더미 데이터를 쉽게 관리하고 애플리케이션 전체에서 사용할 수 있게 되었습니다.

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

'DEV > Java' 카테고리의 다른 글

DataJpaTest  (0) 2023.07.11
@ToString  (0) 2023.07.10
SQL 조인에 대한 이해 - Outer Join과 Inner Join  (0) 2023.07.07
Meta 어노테이션  (0) 2023.07.07
IoC  (0) 2023.07.07

댓글