如果我定義一個注釋來設置類字段,如下所示:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@interface Set { int value();}經過必要的反思:class Injector { public static void inject(Object instance) { Field[] fields = instance.getClass().getDeclaredFields(); for (Field field : fields) { if (field.isAnnotationPresent(Set.class)) { Set set = field.getAnnotation(Set.class); field.setAccessible(true); // should work on private fields try { field.set(instance, set.value()); } catch (Exception e) { e.printStackTrace(); } } } }}我會像這樣使用它:class Demo { @Set(1) public int var; public int var2;}我將如何在啟動時在 spring(不是 spring-boot)中注入它?我在這里找到了這個例子,但我不想自己調用注入方法。
1 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
您可以為BeanPostProcessorspring 上下文提供一個。
public class Injector implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
inject(bean);
return bean;
}
}
添加回答
舉報
0/150
提交
取消