// 설정 클래스로 Spring IoC 컨테이너가 관리할 빈을 정의합니다.@Configurationpublic class AppConfig { // MyService 타입의 빈을 생성하여 IoC 컨테이너에 등록합니다. @Bean public MyService myService() { return new MyServiceImpl(); } // MyRepository 타입의 빈을 생성하여 IoC 컨테이너에 등록합니다. @Bean public MyRepository myRepository() { return new MyRepositoryImpl(); }}// 서비스 인터페이스 정의public interface MyService { void performTask();}// 서비스 구현 클래스public class MyServiceImpl implements MyService { private final MyRepository myRepository; // MyRepository 타입의 의존성을 생성자를 통해 주입받습니다. public MyServiceImpl(MyRepository myRepository) { this.myRepository = myRepository; } @Override public void performTask() { // 비즈니스 로직 수행 System.out.println("Task performed by MyServiceImpl."); myRepository.save(); }}// 리포지토리 인터페이스 정의public interface MyRepository { void save();}// 리포지토리 구현 클래스public class MyRepositoryImpl implements MyRepository { @Override public void save() { // 데이터 저장 로직 System.out.println("Data saved by MyRepositoryImpl."); }}
public class MainApp { public static void main(String[] args) { // AnnotationConfigApplicationContext를 사용하여 Spring IoC 컨테이너를 초기화합니다. ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); // 컨텍스트에서 MyService 타입의 빈을 가져옵니다. MyService myService = context.getBean(MyService.class); // myService 객체의 메서드를 호출하여 작업을 수행합니다. myService.performTask(); }}
// 서비스 인터페이스 정의public interface MyService { void performTask();}// 서비스 구현 클래스@Servicepublic class MyServiceImpl implements MyService { private final MyRepository myRepository; // 생성자를 통해 MyRepository 타입의 의존성을 주입받습니다. @Autowired public MyServiceImpl(MyRepository myRepository) { this.myRepository = myRepository; } @Override public void performTask() { // 비즈니스 로직 수행 System.out.println("Task performed by MyServiceImpl."); myRepository.save(); }}// 리포지토리 인터페이스 정의public interface MyRepository { void save();}// 리포지토리 구현 클래스@Repositorypublic class MyRepositoryImpl implements MyRepository { @Override public void save() { // 데이터 저장 로직 System.out.println("Data saved by MyRepositoryImpl."); }}