@Configuration 와 싱글톤

Spring/Core 2023. 7. 13. 22:04

@Configuration 은 스프링 컨테이너에 스프링 빈을 등록할 수 있도록 해주는 어노테이션이다. @Configuration 이 적용된 클래스 내부에 다수의 @Bean 이 적용된 메서드가 있으면 스프링 빈으로 등록해준다. @Bean 이 적용된 메서드가 하는 역할은 반환되는 객체를 해당 메서드의 이름을 가진 스프링 빈으로 등록한다. @Bean 은 스프링 빈으로 등록되는 클래스에 작성하여도 동작한다. (@Component 적용된 클래스 내부에 작성) 본격적으로 이번 포스팅 주제인.. @Configuration 어노테이션의 이해도를 높여보자. @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); ..

Article Thumbnail
Spring Cache Annotation

Spring/DB, Cache 연동 2023. 6. 4. 00:13

Spring Framework 에서 제공하는 Cache 어노테이션에 대해 알아보자.. 들어가기 앞서 Spring Cache 에 대해 간단하게 알아보자 Spring Cache 애플리케이션의 캐싱 동작을 어떤 캐시 라이브러리를 사용하던지.. 일관된 방식으로 적용되도록 관리한다에 목적이 있다. Spring Cache 는 Spring Framework 의 일부로 제공되는 모듈이며, 캐싱 로직을 비즈니스 로직으로부터 분리(관심사 분리)하여 코드를 깔끔하게 유지할 수 있도록 도와주는 추상화 계층이다. 참고> Spring Data Redis 의 RedisTemplate 은 Redis 와 상호작용하기 위한 템플릿 클래스이다. Redis 서버와 통신하며, 데이터의 실제 연산(저장, 검색 등)을 제공해준다. Redis 데..

Spring AOP 정의

Spring/Core 2022. 11. 29. 21:35

소프트웨어 개발에서 변경이 필요할 때... 변경 지점이 하나가 될 수 있도록 설계하고 개발해야한다.. 핵심 기능과 부가 기능을 분리하여.. 부가 기능을 어느 한 군데서만 관리하면 되도록 해보자.. 이를 위한.. 관점 지향 프로그래밍 AOP (Aspect Oriented Programming) AOP는 OOP를 대체하기 위해 나온 프로그래밍 방식이 아니다. 횡단 관심사를 처리하기 어려운 OOP의 부족한 부분을 보조하기 위해 개발되었다. AOP 적용 방법은 총 3가지가 있다. 1. 컴파일 시점에 부가 기능 적용(원본 코드 조작, Weaving) 2. 클래스 로딩 시점에 부가 기능 적용(.class 파일 조작) 3. 런타임 시점에 부가 기능 적용(프록시 방식) 스프링은 위 3가지 방식 중.. 프록시 방식의 A..

Spring에서 프록시 사용 6

Spring/Core 2022. 11. 29. 00:35

지난 포스팅에서는 빈 후 처리기(BeanPostProcessor) 인터페이스를 구현하여.. 프록시를 스프링 빈 저장소에 원본 객체 대신 집어 넣을 수 있었다. (개발자의 개발 대상 : Advisor, BeanPostProcessor) 스프링은.. 역시 개발자를 편하게 해준다.. 스프링은.. 이미.. 프록시를 생성하기 위한 빈 후처리기를 만들어서 제공한다. -> AnnotationAwareAspectJAutoProxyCreator 이다. -> 따라서, 개발자는 Advisor만 개발하면 된다. 이를 위해서.. 아래 라이브러리를 추가 해주자. implementation 'org.springframework.boot:spring-boot-starter-aop' 해당 라이브러리를 추가하면 스프링 부트가 AOP 관..

Article Thumbnail
Spring에서 프록시 사용 4

Spring/Core 2022. 11. 19. 17:07

앞선 포스팅에서 JDK 동적 프록시 기술과 CGLIB 동적 프록시 기술에 대하여 알아 봤다. 두 기술은 동일하게 프록시라는 기술을 도입하게 해주지만.. JDK 동적 프록시 기술은 인터페이스가 있어야 하고.. CGLIB는 구체 클래스로 프록시를 만들어 낸다.. 그래서 사용법이 달랐다.. 개발자는 편해지고 싶다.. 인터페이스가 있다면 JDK 동적 프록시가 적용되고 구체클래스만 있다면 CGLIB가 적용되게 알아서 해주는건 없나? -> 스프링은 역시 이미 제공하고 있다. 바로 프록시 팩토리 ! 프록시 팩토리에 대해 알아보자.. 선 요약 Advice : 프록시 로직이 들어가고 실제 target 객체 메서드를 호출 Pointcut : 특정 조건이 맞을 때만 프록시가 적용되도록 해줌 프록시에 추가할 로직은 기존에....

Article Thumbnail