코틀린

@Component를 사용하지 못하고 @Bean을 사용해야 하는 경우@Component 어노테이션은 클래스 위에 붙는다. 즉, 내가 클래스를 만들 수 있을 때만 사용할 수 있다. 예를 들어 외부 라이브러리의 클래스를 Bean으로 만들 경우 @Component를 사용할 수는 없다. 예를 들어 A메신저에서 라이브러리를 제공하는데, 이 라이브러리에는 A메신저의 채팅방에 알림을 보내기 위한 AChatService 라는 클래스를 제공한다고 해보자.// 다른 라이브러리의 클래스라서 수정할 수 없다고 가정class AChatService() { fun sendMessage(message: String) { println("Message sent: $message") }} 이런 경우 우리는 A..
@Bean 어노테이션 사용해 Bean 등록하기이전 글에서 유저 정보를 조작하는 UserRepository 인터페이스를 구현하는 객체가 InMemoryUserRepository와 DbUserRepository 두개가 있고, 이 중 하나를 UserCreator 클래스에서 사용한다고 했을 때 코드를 다음과 같이 구성했었다.interface UserRepository { fun createUser(id: String, user: String)}class InMemoryUserRepository(): UserRepository { override fun createUser(id: String, user: String) { println("User $user created with id: $..
Bean의 의존성 주입 우선 순위 관리가 필요한 이유다음과 같은 모양의 UserRepository와 두 개의 구현체 InMemoryUserRepository, DbUserRepository 가 있다고 해보자.interface UserRepository { fun createUser(id: String, user: String)}class InMemoryUserRepository(): UserRepository { override fun createUser(id: String, user: String) { println("User $user created with id: $id in InMemoryUserRepository") }}class DbUserRepository(): ..
클래스 초기화 시 의존성을 주입하는 것이 필요한 이유이전 시간까지 우리는 String 타입이나 Int 같은 간단한 타입의 Bean만 만들었다. 하지만, 실제 애플리케이션을 만들 때는 클래스들이 다른 클래스에 의존하기 때문에 주입을 받아야 하는 상황이 많이 발생한다. 즉, 초기화를 위해 의존성을 주입 받아야 하는 상황이 많이 발생한다.  예를 들어 다음과 같은 UserCreator 클래스가 있다고 해보자.class UserCreator(private val repository: UserRepository) { fun createUserWithRandomId(user: String) { val id = UUID.randomUUID().toString() repository.cr..
Bean의 이름이 설정되는 방법Bean의 이름은 @Bean 어노테이션이 붙은 함수의 이름으로 자동 설정된다. 예를 들어 다음과 같이 Bean들이 설정되어 있다고 해보자.@Configurationclass DefaultContainerConfiguration { @Bean fun blogName(): String { return "KotlinWorld" } @Bean fun blogAge(): Int { return 3 }} 그러면 blogName 이라는 이름의 Bean은 "KotlinWorld"라는 값을 가지고, blogAge 라는 이름의 Bean은 3이라는 값을 가져 아래 그림과 같은 모양이 된다.  @Bean의 name 프로퍼티 사용해 Bean..
Dev.Cho
'코틀린' 태그의 글 목록 (3 Page)