@Component 어노테이션은 클래스에 적용해서 해당 클래스를 스프링의 Beanpool에 등록하는데 사용된다. 해당 어노테이션이 붙은 클래스의 경우 스프링 컨테이너가 자동으로 스캔하여 인스턴스화한다. 이전에 @Configuration과 @Bean을 사용하여 Bean을 등록하는 것보다 간편하게 등록할 수 있다는 장점이 있다.
1. 빈으로 생성 할 클래스를 생성한다.
Eat 클래스는 food라는 멤버변수를 설정하고, 이를 설정하는 getter와 setter 메서드를 설정한다.
package com.example.project2.beans;
public class Eat {
//멤버변수 선언
private String food;
//getter 메서드 선언
public String getFood() {
return food + "를 먹습니다.";
}
//setter 메서드 선언
public void setFood(String food) {
this.food = food;
}
}
2. @Component 어노테이션을 추가한다.
생성한 클래스에 @Component 어노테이션을 추가한다. 스프링 컨테이너가 해당 클래스를 스캔하여 자동으로 빈으로 등록하여, 인스턴스를 생성하고 관리한다.
package com.example.project2.beans;
// Component를 import한다.
import org.springframework.stereotype.Component;
@Component
public class Eat {
//멤버변수 선언
private String food;
//getter 메서드 선언
public String getFood() {
return food + "를 먹습니다.";
}
//setter 메서드 선언
public void setFood(String food) {
this.food = food;
}
}
3. 애플리케이션에서 빈 사용
@SpringBootApplication 어노테이션을 통해서 스프링 부트 어플리케이션을 초기화하고 컴포넌트 스캔을 활성화한다. 이후 getBean을 사용하여 Eat 클래스의 인스턴스를 가져온다. setFood를 통해서 food 변수를 설정하고 getFood 메서드를 호출하여 값을 출력한다.
package com.example.project2;
import com.example.project2.beans.Eat;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class Project2Application {
public static void main(String[] args) {
//스프링 컨테이너에 직접 접근할 수 있도록 app이라는 변수를 할당한다.
ApplicationContext app = SpringApplication.run(Project2Application.class, args);
//Eat.class 빈을 가져온다.
Eat apple = app.getBean(Eat.class);
//Eat.class의 setter메서드를 통해서 설정한다.
apple.setFood("사과");
System.out.println(apple.getFood());
}
}
'Backend > Spring' 카테고리의 다른 글
Spring : 파라미터를 처리하는 방법 ( @PathVariable, @RequestParam, @RequestMapping ) (0) | 2024.10.27 |
---|---|
Spring : Record 클래스 사용하기 (0) | 2024.10.27 |
Spring : Lombok(롬복)에 대해 알아보자 (0) | 2024.10.27 |
Spring : DTO(Data Transfer Object)에 대해서 (0) | 2024.10.27 |
Spring : @Controller 활용하여 다양한 컬렉션 데이터 반환하기 (0) | 2024.10.26 |
Spring : @Controller와 @RestController 어노테이션에 대해서 (1) | 2024.10.26 |
Spring : @Autowired 어노테이션에 대해서 (0) | 2024.10.26 |
Spring : Spring의 기초에 대해서 (0) | 2024.10.23 |