[SPRING] Spring에서 상수 문자열을 사용하여 패키지 (포함 하위 패키지)의 각 Bean ID 앞에 어떻게합니까?
SPRINGSpring에서 상수 문자열을 사용하여 패키지 (포함 하위 패키지)의 각 Bean ID 앞에 어떻게합니까?
특정 패키지와 하위 패키지에 @String으로 주석이 달린 각 bean 앞에 주어진 문자열을 붙이는 방법이 있습니까?
예를 들어,이 빈이 있습니다.
package com.example.foo;
@Component
class MyBean {}
자동으로 (컴포넌트 스캔에 의해) 생성 된 Bean ID가 fooMyBean (기본 'M'이 선호 됨) 또는 foo-myBean (기본 myBean 대신)이되도록 foo의 모든 Bean에 foo가 접두어로 사용되기를 원합니다. 접두사는 어딘가에 정의 된 문자열이며 패키지 이름에서 자동으로 파생되지 않습니다.
또는 @FooComponent와 같은 사용자 지정 주석을 사용하여이를 달성 할 수 있습니까? (어떻게? ;-))
해결법
-
==============================
1.Spring은 BeanNameGenerator 전략을 사용하여 Bean 이름을 생성합니다. 특히 AnnotationBeanNameGenerator는 첫 글자 소문자 전략으로 @Component 클래스의 이름을 생성하는 것입니다.
Spring은 BeanNameGenerator 전략을 사용하여 Bean 이름을 생성합니다. 특히 AnnotationBeanNameGenerator는 첫 글자 소문자 전략으로 @Component 클래스의 이름을 생성하는 것입니다.
전달 된 BeanDefinition을 검사하여 고유 한 BeanNameGenerator를 구현하고 사용자 정의 전략을 적용 할 수 있습니다.
Spring Boot를 사용하는 경우 SpringApplicationBuilder에서 바로 수행 할 수 있습니다.
@SpringBootApplication public class DemoApplication { public static class CustomGenerator extends AnnotationBeanNameGenerator { @Override public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { /** * access bean annotations or package ... */ return super.generateBeanName(definition, registry); } } public static void main(String[] args) { new SpringApplicationBuilder(DemoApplication.class) .beanNameGenerator(new CustomGenerator()) .run(args); } }
from https://stackoverflow.com/questions/39818728/how-do-i-prefix-each-bean-id-in-a-package-inc-sub-packages-with-a-constant-st by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] ConfigurableApplicationContext 및 ApplicationContext (0) | 2019.08.13 |
---|---|
[SPRING] 스프링 부트 REST @RequestParam의 유효성이 검사되지 않음 (0) | 2019.08.13 |
[SPRING] Spring @Value 주석에서 기본값을 올바르게 지정하는 방법은 무엇입니까? (0) | 2019.08.12 |
[SPRING] JPA + Spring에서 예외 후 트랜잭션 롤백 (0) | 2019.08.09 |
[SPRING] OutputStream을 갖는 Spring @Controller에서 파일 반환 (0) | 2019.08.08 |