@Bean Annotation @Configuration @Autowired

"Bean": 스프링 프레임워크에서 관리하는 객체

@Configuration : 빈(bean) 정의 및 의존성 주입 등 다양한 설정을 포함할 수 있다.

1.빈 등록: @Bean 어노테이션과 함께 사용하여 스프링 컨테이너에 빈을 등록. 이를 통해 다른 클래스에서 필요할 때 주입하여 사용할 수 있다.

2.의존성 주입: @Autowired나 @Inject와 같은 어노테이션을 사용하여 다른 빈들 간의 의존성을 주입한다.

3.환경 설정: @PropertySource 어노테이션을 사용하여 외부 설정 파일을 읽어들일 수 있다.

4.프로필 설정: @Profile 어노테이션을 사용하여 개발, 테스트, 운영 등 다양한 환경에 맞는 빈 설정을 구성할 수 있다.

//svc interface
public interface MyService {
    String getMessage();
}
//svc Impl
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class MyServiceImpl implements MyService {

    private final MyRepository myRepository;

    @Override
    public String getMessage() {
        return myRepository.getMessage();
    }
}
//DAO interface
public interface MyRepository {
    String getMessage();
}
//DAO Impl
public class MyRepositoryImpl implements MyRepository {

    @Override
    public String getMessage() {
        return "Hello from MyRepositoryImpl";
    }
}
@Configuration
public class AppConfig {

    @Bean
    public MyService myService(MyRepository myRepository) {
        return new MyServiceImpl(myRepository);
    }

    @Bean
    public MyRepository myRepository() {
        return new MyRepositoryImpl();
    }
}
//Controller
@RestController
public class MyController {

    private final MyService myService;

    @Autowired
    public MyController(MyService myService) {
        this.myService = myService;
    }

    @GetMapping("/message")
    public String message() {
        return myService.getMessage();
    }
}

+ Recent posts