IoC (Inversion of Control) 컨테이너

ApplicationContext (BeanFactory)

class OwnerController {
	private final OwnerRepository owners;
	private final ApplicationContext applicationContext;

	public OwnerController(OwnerRepository clinicService, ApplicationContext applicationContext) {
		this.owners = clinicService;
		this.applicationContext = applicationContext;
	}

	@GetMapping("/bean")
	@ResponseBody
	public String getBean() {
		return "OwnerRepository: " + owners + "\\n" +
			"ApplicationContext: " + applicationContext.getBean(OwnerRepository.class);
	}
}
OwnerRepository: org.springframework.data.jpa.repository.support.SimpleJpaRepository@4878b323 
ApplicationContext: org.springframework.data.jpa.repository.support.SimpleJpaRepository@4878b323

Bean

<aside> 💡 스프링 IoC(ApplicationContext)가 관리하는 객체

</aside>

등록 대상

@Configuration

@Configuration
public class SampleConfig {

	@Bean
	public SampleController sampleController() {
		return new SampleController();
	}
}

의존성 주입 (Dependency Injection)

@Autowired