Home PostConstruct와 Supplier Annotation
Post
Cancel

PostConstruct와 Supplier Annotation

Annotation

Spring을 사용하다보면 다양한 Annotaion을 사용하게 되는데 회사코드에서 처음보는 Annotation을 만나서 어떤 기능을 하는지, 왜 사용하는 건지 정리해보았다.

@PostConstruct

: DI(의존성을 주입) 한 이후에 실행되며 class 가 service로 올라가기 전에 실현된다. 한 클래스에서 하나의 메소드에만 사용이 가능하다.

사용이유와 예시

@Value를 통해 설정값을 받고, 그 값을 주입받은 이후에 변수에 값을 넣어야하기 때문에 @PostConstruct 를 사용해서 DI가 일어난 다음에 메소드가 실행되게끔 한다.

  • 예시
1
2
3
4
5
6
7
8
9
10
11
@Getter
@Configuration
public class Configuration { // 환경변수 받음

	@Value("${apiGateway.username}")
	private String username;

	@Value("${apiGateway.password}")
	private String password;
	
}
1
2
3
4
5
6
7
	private final Configuration configuration;

	@PostConstruct
	private void postConstruct() { // 환경변수 주입후 변수에 값을 담는다.
		username = configuration.getUsername();
		password = configuration.getPassword();
	}

@Supplier<>

: 매개변수를 받지않고 단순히 무언가를 반환한다. 말그대로 supply(공급)한다.

1
2
3
4
5
6
7
@FunctionalInterface  
public interface Supplier<T> {  
  
    /**  
     * Gets a result.     *     * @return a result  
     */    T get();  
}

Supplier 의 내부코드를 보면 값을 리턴하는 로직이 존재한다.

  • 예시
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    public class SupplierExample {
    
      public static void main(String[] args) { 
    		
          Supplier<String> helloSupplier = () -> "Hello "; 
          System.out.println(helloSupplier.get() + "World"); 
    		
      }
    }
    

결과값: Hello World

This post is licensed under CC BY 4.0 by the author.

정리와 DIP

Process와 Thread