0
디버깅을 위해, 나는이 일을하고 싶습니다 : 공장은 콩을 만들었습니다bean 정의를 bean에 "autowire"할 수 있습니까?
@Autowired
private BeanDefinition myBeanDefinition;
즉 한 후, 그것을 디버깅하는 동안 어디에서 왔는지 그래서 쉽게 볼 수 그것으로 bean 정의를 연결합니다.
또는 런타임에 콩이 정의 된 곳을 볼 수있는 또 다른 방법이 있을까요? 당신의 콩 BeanDefinitionAware
을 구현합니다
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
public class AutowireBeanDefinitionPostProcessor implements BeanPostProcessor {
@Autowired
private ApplicationContext applicationContext;
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if(bean instanceof BeanDefinitionAware) {
ConfigurableListableBeanFactory factory = ((ConfigurableApplicationContext) applicationContext).getBeanFactory();
BeanDefinition bd = factory.getBeanDefinition(beanName);
((BeanDefinitionAware) bean).setBeanDefinition(bd);
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
: