스프링

@PostContruct 란 무엇인가?@PostConstruct는 함수에 붙는 어노테이션으로, 해당 어노테이션이 붙은 함수는 Bean이 만들어질 때 한 번 실행된다. Bean이 초기화된 이후에 데이터를 로딩해야 한다거나, 로깅을 해야 하는 경우 @PostContruct 어노테이션을 사용할 수 있다. @PostContruct 사용해보기예를 들어 검색 결과를 메모리에 저장해놓는 SearchInMemoryCache 클래스가 있다고 해보자. 이 클래스의 경우 초기화가 된 후 Bean으로 등록되자마자 초기 결과가 있어야 한다고 해보자. 이런 경우 다음과 같이 @PostContruct 어노테이션을 setUp 함수 위에 붙여서 초기 데이터를 세팅할 수 있다.@Componentclass SearchInMemoryCac..
ObjectProvider가 필요한 이유앞서 우리는 다음과 같이 ShoppingCart를 프로토 타입 Bean으로 만들고, 이를 싱글톤으로 선언된 CartController에서 사용하고자 했다. @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)@Componentclass ShoppingCart { private val items: MutableList = mutableListOf() fun addItem(item: String) { items.add(item) } fun removeItem(item: String) { items.remove(item) }}@Component@Scope(ConfigurableBeanFa..
@Scope 어노테이션이 필요한 이유우리가 Bean을 만들 때 기본적으로 싱글톤으로 만들어진다. 즉, 한 번 생성되면 해당 Bean이 필요한 곳 모두에서 재사용된다. 만약 순수 함수로만 구성된 Bean이거나 애플리케이션 실행 도중 하나의 공통된 상태만 유지하면 되는 객체라면 이렇게 싱글톤으로 생성한 후 모든 곳에서 재사용하면 된다.하지만, 종종 상태를 가지면서 이 상태가 사용되는 곳마다 다르게 관리돼야 하는 Bean이 있다. 예를 들어 사용자를 위한 장바구니 객체를 만들었는데 사용자마다 다른 장바구니가 만들어져야 하는 경우가 있을 수 있다. 이런 경우에는 Bean이 필요할 때마다 새로운 인스턴스가 생성돼야 한다.Spring은 이러한 상황들을 위해 Bean이 생성되는 방식을 제공하는 @Scope 어노테이션..
지연 초기화가 필요한 이유@Component 어노테이션이나 @Bean 어노테이션을 통해 IOC Container에 Bean을 등록하면 스프링 애플리케이션 시작 시 등록된다. 예를 들어 다음과 같이 초기화 시 InitTestUseCase Initialized 를 출력하는 InitTestUseCase를 만들어보자.@Componentclass InitTestUseCase { init { println("InitTestUseCase initialized") }} 그런 다음 Configuration 파일을 다음과 같이 만든 후@ComponentScan@Configurationclass InitConfiguration 다음과 같이 컨테이너를 초기화 하고, "After container ini..
@ComponentScan의 기본 동작클래스에 @Configuration 어노테이션과 함께 @ComponentScan 어노테이션이 붙어 있으면, 해당 Configuration 은 해당 패키지 하위의 모든 클래스를 스캔해 @Component 어노테이션이 붙은 객체들을 모두 Bean으로 만든다. 예를 들어 다음과 같은 패키지 구조와 파일들이 있다고 해보자.  section8 패키지는 다음 경로에 있다: com.kotlinworld.spring.di.section8  이곳에서 ScanConfiguration파일은 @Configuration 어노테이션과 @ComponentScan 어노테이션이 붙은 클래스이고@ComponentScan@Configurationclass ScanConfiguration ScanReq..
Dev.Cho
'스프링' 태그의 글 목록 (3 Page)