config : gradle com.ewerk.gradle.plugins.querydsl plugin 제거
Gradle Annotation processor를 사용하도록 설정 변경dev
parent
a9c02807e4
commit
3e21f26348
@ -0,0 +1,56 @@
|
|||||||
|
package com.xit.core.config._ignore;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||||
|
import org.springframework.beans.factory.support.BeanNameGenerator;
|
||||||
|
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
|
||||||
|
import org.springframework.lang.NonNull;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 패키지 이름이 다른데, 클래스 이름이 동일한 경우
|
||||||
|
* 두 개의 클래스 모두 빈으로 등록
|
||||||
|
*
|
||||||
|
* 특정 어노테이션을 가진 클래스만 패키지 이름까지 포함하여 빈 등록 시에 이름을 구분할 수 있도록 한다.
|
||||||
|
*
|
||||||
|
* /v1/api, /v2/api 형태로 생성 가능하도록
|
||||||
|
*/
|
||||||
|
public class CustomBeanNameGenerator implements BeanNameGenerator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* basePackages 외에 scaning된 beanGenerator
|
||||||
|
*/
|
||||||
|
private static final BeanNameGenerator DELEGATE = new AnnotationBeanNameGenerator();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VersioningBeanNameGenerator 대상 package 경로
|
||||||
|
*/
|
||||||
|
private final List<String> basePackages = new ArrayList<>(
|
||||||
|
Arrays.asList("com.xit.biz", "com.xit.core")
|
||||||
|
);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NonNull String generateBeanName(@NonNull BeanDefinition definition, @NonNull BeanDefinitionRegistry registry) {
|
||||||
|
if(isTargetPackageBean(definition)) {
|
||||||
|
return getBeanName(definition);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DELEGATE.generateBeanName(definition, registry);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isTargetPackageBean(BeanDefinition definition) {
|
||||||
|
String beanClassName = getBeanName(definition);
|
||||||
|
return basePackages.stream().anyMatch(beanClassName::startsWith);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getBeanName(BeanDefinition definition) {
|
||||||
|
return definition.getBeanClassName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addBasePackages(String path) {
|
||||||
|
this.basePackages.add(path);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.xit.core.config._ignore;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
|
||||||
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||||
|
import org.springframework.beans.factory.support.BeanNameGenerator;
|
||||||
|
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
|
||||||
|
import org.springframework.lang.NonNull;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <pre>
|
||||||
|
* 패키지 이름이 다른데, 클래스 이름이 동일한 경우
|
||||||
|
* 두 개의 클래스 모두 빈으로 등록
|
||||||
|
*
|
||||||
|
* 특정 어노테이션을 가진 클래스만 패키지 이름까지 포함하여 빈 등록 시에 이름을 구분할 수 있도록 한다.
|
||||||
|
*
|
||||||
|
* /v1/api, /v2/api 형태로 생성 가능하도록
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
public class CustomBeanNameGenerator2 implements BeanNameGenerator {
|
||||||
|
|
||||||
|
private final AnnotationBeanNameGenerator defaultNameGenerator = new AnnotationBeanNameGenerator();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NonNull String generateBeanName(@NonNull BeanDefinition definition, @NonNull BeanDefinitionRegistry registry) {
|
||||||
|
String beanName;
|
||||||
|
|
||||||
|
if (isService(definition)) {
|
||||||
|
beanName = getFullName((AnnotatedBeanDefinition) definition);
|
||||||
|
} else {
|
||||||
|
beanName = defaultNameGenerator.generateBeanName(definition, registry);
|
||||||
|
}
|
||||||
|
return beanName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getFullName(final AnnotatedBeanDefinition definition) {
|
||||||
|
// 패키지를 포함한 전체 이름을 반환한다.
|
||||||
|
return definition.getMetadata().getClassName();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isService(final BeanDefinition definition) {
|
||||||
|
if (definition instanceof AnnotatedBeanDefinition) {
|
||||||
|
final Set<String> annotationTypes = ((AnnotatedBeanDefinition) definition).getMetadata()
|
||||||
|
.getAnnotationTypes();
|
||||||
|
|
||||||
|
return annotationTypes.stream()
|
||||||
|
.anyMatch(type -> type.equals(Service.class.getName()));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -1,52 +1,21 @@
|
|||||||
package com.xit.core.config.support;
|
package com.xit.core.config.support;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||||
import org.springframework.beans.factory.support.BeanNameGenerator;
|
import org.springframework.beans.factory.support.BeanNameGenerator;
|
||||||
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
|
|
||||||
import org.springframework.lang.NonNull;
|
import org.springframework.lang.NonNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Bean 이름 식별시 패키지를 포함하도록 지정
|
|
||||||
* /v1/api, /v2/api 형태로 생성 가능하도록
|
|
||||||
*/
|
|
||||||
public class CustomBeanNameGenerator implements BeanNameGenerator {
|
public class CustomBeanNameGenerator implements BeanNameGenerator {
|
||||||
|
|
||||||
/**
|
|
||||||
* basePackages 외에 scaning된 beanGenerator
|
|
||||||
*/
|
|
||||||
private static final BeanNameGenerator DELEGATE = new AnnotationBeanNameGenerator();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VersioningBeanNameGenerator 대상 package 경로
|
|
||||||
*/
|
|
||||||
private final List<String> basePackages = new ArrayList<>(
|
|
||||||
Arrays.asList("com.xit.biz", "com.xit.core")
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NonNull String generateBeanName(@NonNull BeanDefinition definition, @NonNull BeanDefinitionRegistry registry) {
|
public @NonNull String generateBeanName(@NonNull BeanDefinition definition, @NonNull BeanDefinitionRegistry registry) {
|
||||||
if(isTargetPackageBean(definition)) {
|
final String result;
|
||||||
return getBeanName(definition);
|
result = generateFullBeanName((AnnotatedBeanDefinition)definition);
|
||||||
}
|
System.out.println(result);
|
||||||
|
return result;
|
||||||
return DELEGATE.generateBeanName(definition, registry);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isTargetPackageBean(BeanDefinition definition) {
|
|
||||||
String beanClassName = getBeanName(definition);
|
|
||||||
return basePackages.stream().anyMatch(beanClassName::startsWith);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getBeanName(BeanDefinition definition) {
|
|
||||||
return definition.getBeanClassName();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addBasePackages(String path) {
|
private String generateFullBeanName(final AnnotatedBeanDefinition definition) {
|
||||||
this.basePackages.add(path);
|
return definition.getMetadata().getClassName();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue