[SPRING] CDI의 InjectionPoint에 해당하는 Spring DI는 무엇입니까?
SPRINGCDI의 InjectionPoint에 해당하는 Spring DI는 무엇입니까?
누가 그것을 호출했는지 알 수있는 Spring의 bean 프로듀서 메소드를 만들고 싶습니다. 그래서 다음 코드로 시작했습니다 :
@Configuration
public class LoggerProvider {
@Bean
@Scope("prototype")
public Logger produceLogger() {
// get known WHAT bean/component invoked this producer
Class<?> clazz = ...
return LoggerFactory.getLogger(clazz);
}
}
콩을 주입시키고 자하는 정보를 어떻게 얻을 수 있습니까?
나는 봄 세계에서 CDI의 InjectionPoint와 비슷한 것을 찾고있다.
해결법
-
==============================
1.제가 아는 한, 스프링은 그런 개념을 가지고 있지 않습니다.
제가 아는 한, 스프링은 그런 개념을 가지고 있지 않습니다.
그런 다음 처리되는 지점을 인식하는 것은 BeanPostProcessor입니다.
예:
@Target(PARAMETER) @Retention(RUNTIME) @Documented public @interface Logger {} public class LoggerInjectBeanPostProcessor implements BeanPostProcessor { public Logger produceLogger() { // get known WHAT bean/component invoked this producer Class<?> clazz = ... return LoggerFactory.getLogger(clazz); } @Override public Object postProcessBeforeInitialization(final Object bean, final String beanName) throws BeansException { return bean; } @Override public Object postProcessAfterInitialization(final Object bean, final String beanName) throws BeansException { ReflectionUtils.doWithFields(bean.getClass(), new FieldCallback() { @Override public void doWith(final Field field) throws IllegalArgumentException, IllegalAccessException { field.set(bean, produceLogger()); } }, new ReflectionUtils.FieldFilter() { @Override public boolean matches(final Field field) { return field.getAnnotation(Logger.class) != null; } }); return bean; } }
-
==============================
2.Spring 4.3.0은 bean 생성 메소드에 InjectionPoint와 DependencyDescriptor 매개 변수를 사용한다.
Spring 4.3.0은 bean 생성 메소드에 InjectionPoint와 DependencyDescriptor 매개 변수를 사용한다.
@Configuration public class LoggerProvider { @Bean @Scope("prototype") public Logger produceLogger(InjectionPoint injectionPoint) { Class<?> clazz = injectionPoint.getMember().getDeclaringClass(); return LoggerFactory.getLogger(clazz); } }
그건 그렇고,이 기능 SPR - 14033에 대한 문제는이 질문에 링크 블로그 게시물에 대한 의견에 링크.
from https://stackoverflow.com/questions/9685316/what-is-the-spring-di-equivalent-of-cdis-injectionpoint by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] RestTemplate을 사용하여 HTTP로 헤더 가져 오기 (0) | 2019.03.26 |
---|---|
[SPRING] @Secured annotation에 'or'조건을 가진 여러 역할이 Spring Security에 허용되어 있습니까? (0) | 2019.03.26 |
[SPRING] Spring, DBCP 및 MySQL을 사용하여 연결 시간대 설정 (0) | 2019.03.26 |
[SPRING] 봄 부팅 건강이 세부 정보를 표시하지 않음 (withDetail info) (0) | 2019.03.26 |
[SPRING] Spring 데이터 계산 MongoDB 저장소 (0) | 2019.03.26 |