代码如下
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
public @interface JsonValue {
/**
* key
*
* @return
*/
String value();
}
@Slf4j
@Component
public class JsonValueProcessor implements BeanFactoryAware, BeanPostProcessor, PriorityOrdered {
private ConfigurableBeanFactory beanFactory;
private static final Gson gson = new Gson();
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = (ConfigurableBeanFactory) beanFactory;
}
@Override
public int getOrder() {
//make it as late as possible
return Ordered.LOWEST_PRECEDENCE;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
Class<?> clazz = bean.getClass()