티스토리 뷰

AmazonWebserviceClientFactoryBean 은 AbstractFactoryBean<T>를 상속하고 있으며, 이 따라서 메서드에는 createInstance()라는 메서드가 존재하며 이를 Override 하고 있다.

 

@Override
	protected T createInstance() throws Exception {

		String builderName = this.clientClass.getName() + "Builder";
		Class<?> className = ClassUtils.resolveClassName(builderName,
				ClassUtils.getDefaultClassLoader());

		Method method = ClassUtils.getStaticMethod(className, "standard");
		Assert.notNull(method, "Could not find standard() method in class:'"
				+ className.getName() + "'");

		AwsClientBuilder<?, T> builder = (AwsClientBuilder<?, T>) ReflectionUtils
				.invokeMethod(method, null);

이게 크 코드다.

 

이 AmazonWebServiceClientFactoryBean은(어휴 이름 길다) ContextStackAutoConfiguration 클래스의 @Configuration이 지정되어 있으므로 스프링에 의해 탐지되어(어디서..?) 수행되는 초기화 과정에서 그 생성자가 호출된다.

 

@Bean
@ConditionalOnMissingAmazonClient(AmazonCloudFormation.class)
public AmazonWebserviceClientFactoryBean<AmazonCloudFormationClient> amazonCloudFormation() {
  return new AmazonWebserviceClientFactoryBean<>(AmazonCloudFormationClient.class,
  this.credentialsProvider, this.regionProvider);
}

 

그리고 생성된 것이 Spring Bean이기 때문에 저 createInstance 메서드가 호출된다. 즉, Override 된 쪽에 standard 란 메서드 이름을 찾아 호출을 하는 부분이 실행되는 바다.

 

이러니 IDE에서 제공하는 메서드 호출부를 찾는 기능이 동작할 리가 없다.

 

코드를 더 잘 볼걸.. 겨우 찾았네.

 

 

'Java' 카테고리의 다른 글

String Class 를 열어보다(시작)-3. 생성자..?  (0) 2021.03.21
String Class 를 열어보다(시작).  (0) 2021.03.18
Java ConditionalOnClass 어노테이션  (0) 2020.11.05
Java @Generated 어노테이션  (0) 2020.11.05
Lite Mode Bean  (0) 2020.11.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함