반응형
코틀린에서 Spring Bean을 등록하는 방법.
@Configuration & @Bean
Spring에서 Bean을 등록하는 방법은 여러가지가 존재한다.
그 중 @Configuration과 @Bean을 이용하여 Spring Bean을 등록할 수 있다.
// Java 에서 @Configuration & @Bean 이용
@Configuration
public class ConfTest {
@Bean
public BeanTest beanTest(){
return new BeanTest();
}
}
하지만, 코틀린에서는 @Configuration과 @Bean을 이용할 때 주의할 점이 존재한다.
기본적으로 @Configuration과 @Bean이 동작하는 방식은 CGLIB을 이용하여 프록시 객체를 만들고, 해당 프록시 객체를 등록한다.
즉, @Configuration과 @Bean을 선언한 클래스와 메소드는 프록시 객체를 만들 수 있어야 한다.
=> 상속이 가능해야 한다.
여기서, 코틀린에서 class와 fun 선언을 살펴보자.
기본적으로 코틀린의 클래스와 메소드는 상속 불가능한 final 키워드가 자동으로 입력된다.
즉, java에서 처럼 그냥 class와 fun 키워드만 작성하게 되면, Bean 등록이 불가능하다는 에러 메시지가 출력된다.
결론적으로 코틀린에서 @Configuration과 @Bean을 사용하기 위해서는 open 키워드를 적어야 한다.
@Transactional 과 AOP
JPA의 @Transactional과 AOP 역시 같은 문제가 발생한다.
기본적으로 @Transactional 역시 프록시 객체를 만들어서 작동하는 방식이다.
이러한 방식은 AOP도 역시 같다.
즉, @Transactional과 AOP를 사용하기 위해서는 코틀린의 class와 fun 앞에 open 키워드를 적어야 한다는 것이다.
반응형
'Spring > Spring 팁' 카테고리의 다른 글
Kotlin과 all-open (0) | 2022.02.14 |
---|---|
[Spring] @Configuration과 @Component, 그리고 @Bean (0) | 2022.01.29 |
Spring Boot - Validation (0) | 2021.09.23 |
[ Spring Security ] Spring Security0 (2) | 2021.08.30 |
댓글