본문 바로가기
반응형

Java/[스프링 핵심 원리]8

[스프링] AOP 적용을 위해 @Aspect를 사용해보자 스프링을 사용하는 백엔드 개발자로서 AOP는 놓칠 수 없는 중요한 기능이다. @Aspect를 통해서 AOP를 편리하게 적용하는 방법 및 어드바이스 종류별 특징과 사용법을 알아보자. @Aspect 기본 사용법 @Aspect public class AspectV1 { @Around("execution(* hello.aop.order..*(..))") public Object doLog(ProceedingJoinPoint joinPoint) throws Throwable{ log.info("[log] {}", joinPoint.getSignature()); // joinpoint 시그니처 return joinPoint.proceed(); } } 클래스에 @Aspect 애노테이션을 붙이고, 이 클래스를 스프링 .. 2024. 3. 14.
[스프링] 관점 지향 프로그래밍 AOP란 무엇일까 관점 지향 프로그래밍 AOP는 부가 기능인 횡단 관심사를 핵심 로직으로부터 분리하여 공통적으로 처리하기 위한 방법론이다. AOP의 기본적인 개념과 관련 용어에 대해 알아보자. AOP의 기본 개념 애플리케이션 로직은 핵심 기능과 부가 기능으로 나눌 수 있다. 핵심 기능 - 해당 객체가 제공하는 고유의 기능이다. 부가 기능 - 핵심 기능을 보조하기 위해 핵심 기능과 함께 사용되는 기능이다. 부가 기능은 보통 여러 클래스에 걸쳐서 동일하게 사용된다. 예를 들어 모든 애플리케이션 호출을 로깅하는 요구사항이 있다면 각 클래스마다 로그 추적 로직을 넣게 될 것이다. 이렇게 하나의 부가 기능이 여러 곳에 동일하게 사용되는 경우 cross-cuttion concerns(횡단 관심사)라고 한다. 부가 기능을 적용하기 위.. 2024. 3. 14.
[스프링 핵심 원리] 컴포넌트 스캔(@ComponentScan) 지금까지는 스프링 빈을 등록할 때 @Bean을 통해 설정 파일에 직접 등록해주었다. 그런데 등록할 빈이 수십, 수백 개가 되면 이 모든 빈을 직접 나열해가며 등록해야 할까? 스프링에서는 이 문제를 해결해주는 컴포넌트 스캔 기능을 제공한다. 컴포넌트 스캔 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공하며, 의존관계를 자동으로 주입하는 @Autowired 기능도 제공한다. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframew.. 2021. 12. 12.
[스프링 핵심 원리] 싱글톤 컨테이너와 @Configuration 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했으며, 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 동시에 여러 고객이 요청을 하기 때문에 매 요청마다 객체가 생성되는 것은 매우 비효율적인 일이다. 싱글톤 패턴과 싱글톤 컨테이너 스프링이 없는 순수한 DI 컨테이너를 사용하면, 컨테이너는 요청이 올 때마다 필요한 객체를 새로 생성하게 된다. 예를 들어 고객 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸되어 메모리 낭비가 심하다. 이를 해결하기 위해 해당 객체가 딱 1개만 생성되고, 이를 공유하도록 하는 싱글톤 패턴이 등장한다. 싱글톤 패턴 싱글톤(Singleton) 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 .. 2021. 12. 11.
반응형