본문 바로가기
반응형

Spring8

[Spring Core] AOP(Aspect Oriented Programming) - 2편(Advice 정의, @Before, @AfterReturning, @AfterThrowing, @After, @Around) AOP - 2편 (Advice 정의) [자바 기반 설정 방식에서의 Advice 정의] 앞서 스프링 AOP에서 활용 가능한 Advice로 다섯 가지 종류가 있다고 했다. 이제 각각의 구현 방식을 예를 들어 살펴보자. Before 이미 앞서 예를 들었지만 Advice 기능을 하는 메서드에 @Before 애너테이션(org.aspectj.lang.annotation.Before)을 붙인 다음, Pointcut 표현식을 추가하면 된다. 이때 사용되는 Pointcut 표현식에 대해서는 AOP - 3편에서 자세히 다루겠다. @Before 애너테이션이 붙은 메서드는 JoinPoint를 매개변수로 선언하고 있는데, 메서드가 호출될 때 전달되는 인수를 통해 실행 중인 메서드의 정보를 구할 수 있다. @Before 애너테이.. 2021. 4. 5.
[Spring Core] AOP(Aspect Oriented Programming) - 1편 (기본 개념·용어·예시) AOP - 1편 소프트웨어를 개발할 때 소스코드의 규모가 커지다 보면 로깅이나 캐시와 같이 비즈니스 로직과는 크게 관련 없는 처리 내용이 소스코드의 여기저기에 산재하기 쉽다. 다음은 본래 메서드의 기능과 상관없이 메서드의 시작과 끝을 로그로 기록하는 예다. 메서드의 시작과 끝을 로깅한 예 public class UserServiceImpl implements UserService { private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class); public User findOne(String username) { log.debug("메서드 시작: UserServiceImpl.findOne 인수 = {}", username.. 2021. 4. 5.
[Spring Core] 빈 설정 분할(@Import)과 프로파일(profile)별 설정 구성(@Profile) 빈 설정 분할 DI 컨테이너에서 관리하는 빈이 많아지면 많아질수록 설정 내용도 많아져서 관리하기가 어려워진다. 이럴 때는 빈 설정 범위를 명확히 하고 가독성도 높이기 위해 목적에 맞게 분할하는 것이 좋다. [자바 기반 설정의 분할] 자바 기반 설정 방식에서 설정된 내용(Configuration Class)을 분할할 때는 @Import 애너테이션(org.springframework.context.annotation.Import)을 사용한다. 다음은 AppConfig 클래스의 빈 정의 내용을 DomainConfig 클래스와 InfrastructureConfig 클래스에 나눠서 분할한 예다. 분할한 설정 클래스를 임포트하는 대표 설정 클래스(AppConfig.java) @Configuration @Import.. 2021. 4. 5.
[Spring Core] Bean Scope(빈 스코프)와 Bean의 LifeCycle(빈의 생명주기) Bean Scope DI 컨테이너는 빈 간의 의존 관계를 관리할 뿐만 아니라 빈의 생존 기간도 관리한다. 빈의 생존 기간을 빈 스코프(Bean Scope)라고 하는데 개발자가 직접 빈의 스코프를 다루지 않아도 된다는 점은 DI 컨테이너를 사용하는 큰 이유이기도 하다. DI 컨테이너가 관리하는 빈은 기본적으로 싱글턴으로 만들어진다. 스프링 프레임워크에서 사용 가능한 스코프의 종류는 다음과 같다. 이 중에는 웹 환경에서만 사용 가능한 것도 있다. 스프링 프레임워크에서 사용 가능한 스코프 스코프 설명 singleton DI 컨테이너를 기동할 때 빈 인스턴스 하나가 만들어지고, 이후부터는 그 인스턴스를 공유하는 방식이다. 기본 스코프이기 때문에 별도로 스코프를 지정하지 않았다면 singleton으로 간주한다. .. 2021. 4. 5.
반응형