Spring이 제공하는 IOC Container을 만드는 방법Spring에서는 IOC Container을 만들기 위해 다양한 방법을 제공한다. Annotation을 기반으로 동작하는 IOC Container을 만들 수도 있고, xml을 기반으로 동작하는 IOC Container을 만들 수도 있다. 하지만 xml을 기반으로 동작하는 IOC Container은 이제는 거의 사용되지 않기 때문에 이번 글에서는 Annotation을 기반으로 동작하는 IOC Container을 만드는 방법을 살펴본다. Annotation을 기반으로 동작하는 IOC Container 만들기Annotation을 기반으로 동작하는 IOC Container는 AnnotationConfigApplicationContext 라는 클래스를 ..
Spring
의존성 주입을 알기 위해 미리 알아야 내용들[Spring] 의존성이란 무엇인가? 강한 결합과 느슨한 결합을 통해 이해하는 의존성[Spring] 느슨한 결합의 장점과 한계 자세히 알아보기 의존성 주입이란?의존성이란 하나의 객체가 다른 객체의 기능을 사용하는 것을 뜻한다. 일반적으로 다른 객체에 의존성이 있는 객체를 초기화 하기 위해서는 위해서는 의존성이 있는 객체를 직접 만든 다음 주입해주는 과정을 거친다. 예를 들어 다음과 같은 유저의 정보를 저장하고 가져오는 데이터 레이어 객체 UserRepository가 있다고 해보자.class UserRepository() { private val idToUserMap = mutableMapOf() fun getUser(id: String): String..
의존성이란?소프트웨어 개발에서 의존성(Dependency)이란 한 모듈이 다른 모듈의 기능을 사용하거나, 하나의 객체가 다른 객체의 기능을 사용하는 것을 뜻한다. 예를 들어 A 객체의 기능을 실행할 때 B 객체가 필요하다면, "A 객체는 B 객체에 의존한다"라고 한다. 의존성은 의존하는 정도에 따라 강한 결합과 느슨한 결합으로 나눌 수 있다. 이어서 이 두가지 개념을 사용해 의존성에 대해 이해해보도록 하자. 강한 결합을 통해 이해하는 의존성강한 결합이란?우리가 SNS앱을 개발하는데, 유저에게 푸시 알림을 보내는 서비스를 만든다고 해보자. 그러면 이런 역할을 하는 PushNotificationService는 다음과 같이 만들 수 있다. class PushNotificationService { fu..
스프링 MongoDB 라이브러리와 쿼리 스프링에서 제공되는 MongoDB 라이브러리를 사용하면, 단순히 MongoRepository를 상속 받는 인터페이스를 만드는 것만으로도 필요한 쿼리를 모두 만들어준다. 예를 들어 다음과 같은 books 컬렉션을 만들고, Book Document를 이 컬렉션에 저장한다고 해보자. @Document(collection = "books") data class Book( @Id val id: String? = null, val bookName: String, val description: String ) 그러면 해당 역할을 하는 BookRepository는 다음과 같이 만들 수 있다. interface BookRepository : MongoRepository BookRe..
애러 원인 스프링 부트를 사용한 앱의 모듈화를 진행하다가 다음과 같은 오류가 발생했다. * What went wrong: Execution failed for task ':test-module:compileKotlin'. > Could not resolve all files for configuration ':test-module:compileClasspath'. > Could not find org.springframework.boot:spring-boot-starter-data-mongodb:. 원인은 스프링 부트 스타터(spring-boot-starter) 라이브러리를 사용하려면 플러그인이 설정되어 있어야 하는데 설정되지 않아서였다. 문제 해결 방법 라이브러리 모듈에서의 해결 방법 문제를 해결하기 ..