bean 8

[Spring] 스프링 AOP(7) - AspectJ 표현식

AspectJ의 Pointcut 표현식 AspectJ는 Pointcut을 명시할 수 있는 다양한 명시자를 제공하는데, 스프링은 메서드 호출과 관련된 명시자만을 지원하고 있다. execution 명시자 execution명시자는 Advice를 적용할 메서드를 명시할 때 사용되며, 기본 형식은 다음과 같다. 더보기 execution(수식어패턴? 리턴타입패턴 클래스이름패턴?메서드이름패턴(파라미터패턴) "수식어패턴" 부분은 생략 가능한 부분으로서 public, protected 등이 올 수 있는데 스프링은 public 메서드에만 적용 가능하기 때문에 사실상 public 이외의 값은 의미가 없다. 각 패턴은 "*"을 이용하여 모든 값을 표현할 수 있다. 또한, ".."을 이용하여 0개 이상이라는 의미를 표현할 수 ..

Spring 2022.02.20

[Spring] 빈 라이프사이클

빈 객체의 라이프사이클 스프링 컨테이너는 다음의 두 가지 방식을 이용해서 빈의 라이프사이클을 관리할 수 있다. 스프링이 제공하는 특정 인터페이스를 상속받아 구현 스프링 설정에서 특정 메서드를 호출하라고 지정 스프링 컨테이너는 빈 객체를 생성하고 초기화하고 소멸할 때 다음과 같은 순서대로 빈 객체의 메서드를 실행한다. 위의 그림을 보면 전체 흐름은 객체 [생성/프로퍼티 설정 -> 초기화 -> 사용 -> 소멸]의 네 단계를 거치는 것을 알 수 있다. 컨테이너는 빈 객체를 생성하고 프로퍼티를 설정한 뒤에 빈의 초기화를 진행하며, 컨테이너를 종료(close())하는 과정에서 생성한 빈 객체의 소멸 과정을 진행한다. @PostConstruct, @PreDestroy 어노테이션 각각 초기화를 실행하는 메서드와 소멸..

Spring 2022.02.13

[Spring] @Qualifier 어노테이션

@Qualifier 어노테이션을 이용한 자동 설정 제한 동일한 타입의 빈 객체를 두 개 이상 정의한 뒤 @Autowired 어노테이션을 적용할 경우 NoUniqueBeanDefinitionException을 발생시킨다. 이럴 때는 한정자(qualifier)를 지정해서 빈 객체의 범위를 좁혀야 한다. XML 설정에서는 태그를 이용해서 한정자를 지정하며, 자바 설정에서는 @Qualifier 어노테이션을 이용해서 한정자를 지정한다. ... @Configuration public class ConfigShop { @Bean @Qualifier("order") public SearchClientFactoryBean orderSearchClientFactory() { SearchClientFactoryBean se..

Spring 2022.02.11

[Spring] @Autowired 어노테이션

객체 간 의존 자동 연결 스프링은 개발자가 일일이 의존 정보를 설정하지 않아도 자동으로 스프링 빈 객체 간의 의존을 설정해주는 기능 제공하고 있는데, 이 기능을 사용하면 스프링 코드 설정을 짧게 유지할 수 있게 된다. 이 방법 중에서 @Autowired에 대해서 알아보자. @Autowired 어노테이션을 사용하려면 XML 설정에 다음과 같은 코드를 추가해주어야 한다. // 이하 생략 ... 태그는 다수의 스프링 전처리기 빈을 등록해주는데, 이 중 의존 자동 연결과 관련된 스프링 빈은 다음과 같다. AutowiredAnnotationBeanPostProcessor : @Autowired, JSR-330에 정의된 @Inject 어노테이션 처리 CommonAnnotationBeanPostProcessor : ..

Spring 2022.02.11

[Spring] 스프링 DI를 이용한 객체 생성(3)

이전 글 : https://jaedam.tistory.com/7 [Spring] 스프링 DI를 이용한 객체 생성(2) 이전 글 : https://jaedam.tistory.com/5 [Spring] 스프링 DI를 이용한 객체 생성(1) DI란? DI는 Dependency Injection의 줄임말로서 의존성 주입이라고도 부른다. 스프링은 기본적으로 DI를 기반으로 동작하기 때.. jaedam.tistory.com 앞서 스프링 컨테이너의 종류와 XML 파일의 각 태그를 간략하게 살펴보았다. 이번 글에서는 자바 코드를 이용한 DI 설정에 대해서 살펴보자. @Configuration과 @Bean을 이용한 빈 객체 설정 스프링은 @Configuration 어노테이션이 붙은 클래스를 설정 정보로 사용한다. 그리고..

Spring 2022.02.10

[Spring] 스프링 DI를 이용한 객체 생성(2)

이전 글 : https://jaedam.tistory.com/5 [Spring] 스프링 DI를 이용한 객체 생성(1) DI란? DI는 Dependency Injection의 줄임말로서 의존성 주입이라고도 부른다. 스프링은 기본적으로 DI를 기반으로 동작하기 때문에 DI에 대한 이해가 필수이다. 여기서 말하는 의존(Dependency)이란 한 클래 jaedam.tistory.com 앞서 DI의 개념과 스프링 컨테이너 및 빈 객체를 설정하는 방식을 간략하게 살펴보았다. 이번 글에서는 스프링 컨테이너의 종류와 XML 파일의 각 태그에 대해서 살펴보자. 스프링 컨테이너 종류 스프링은 BeanFactory와 ApplicationContext의 두 가지 타입의 컨테이너를 제공한다. 이 중에서 BeanFactory ..

Spring 2022.02.09

[Spring] 스프링 DI를 이용한 객체 생성(1)

DI란? DI는 Dependency Injection의 줄임말로서 의존성 주입이라고도 부른다. 스프링은 기본적으로 DI를 기반으로 동작하기 때문에 DI에 대한 이해가 필수이다. 여기서 말하는 의존(Dependency)이란 한 클래스에서 다른 기능을 실행하기 위해 다른 클래스(또는 타입)를 필요로 할 때 이를 의존한다고 말한다. public class FileEncryptor { // 의존 객체를 필드(encryptor 필드)로 정의 private Encryptor encryptor = new Encryptor(); public void encrypt(File src, File target) throws IOException { // 의존 객체를 로컬 변수(is, out 변수)로 정의 try(FileInp..

Spring 2022.02.08